출처: 프로그래머스 코딩 테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/134239
나의 풀이
public double[] solution(int k, int[,] ranges)
{
var dots = new List<(int x, int y)>();
dots.Add((0, k));
int i = 1;
while(k > 1)
{
if(k % 2 == 0)
k = k / 2;
else
k = k * 3 + 1;
dots.Add((i, k));
++i;
}
var answer = new double[ranges.GetLength(0)];
for(int j = 0; j < ranges.GetLength(0); ++j)
{
int left = ranges[j, 0];
int right = dots.Count + ranges[j, 1] - 1;
if(left > right)
{
answer[j] = -1;
continue;
}
double sum = 0d;
for(int x = left; x < right; ++x)
{
sum += Math.Min(dots[x].Item2, dots[x + 1].Item2); // 사각형
sum += Math.Abs(dots[x].Item2 - dots[x + 1].Item2) * 0.5d; // 삼각형
}
answer[j] = sum;
}
return answer;
}
문제가 복잡하지만 그냥 점을 찍고 넓이를 구하는 문제.
딱히 특별한 게 없다.
'🛡️ 코딩테스트 > 🛡️ 코테 : 프로그래머스' 카테고리의 다른 글
C# 혼자서 하는 틱택토 - 경우의 수 / 프로그래머스 [Lv.2] (0) | 2023.04.12 |
---|---|
C# 광물 캐기 - DFS / 프로그래머스 [Lv.2] (0) | 2023.04.11 |
C# 달리기 경주 - Dictionary / 프로그래머스 [Lv.1] (0) | 2023.04.08 |
C# 연속된 부분 수열의 합 - 부분 합 투 포인터 / 프로그래머스 [Lv.2] (0) | 2023.04.07 |
C# 조이스틱 - 그리디 DFS / 프로그래머스 [Lv.2] (0) | 2023.04.06 |