[프로그래머스 lv2] 쿼드 압축 후 개수 세기 풀이
✅ 프로그래머스의 모든 문제와 해설 보기[클릭] 해설 주어진 정사각형의 한변의 길이를 n이라 할 때, n x n 정사각형을 4개로 나누어가며 압축하는 문제이다. 정사각형의 한 변의 길이는 n -> n/2 -> n/4 -> ... -> 1 이 되는데, 해당 과정을 재귀로 처리할 수 있다. func(int x, int y, int n)은 왼쪽 위 꼭짓점이 (x, y)이고 한변의 길이가 n인 정사각형에 대하여, 쿼드 압축 결과를 구하는 함수이다. 만약, 해당 정사각형이 모두 같은 수로 이루어져있다면 그 수의 개수를 1 증가시킨다. 만약, 해당 정사각형이 모두 같은 수로 이루어져있지않다면, 한변의 길이가 n/2인 4개의 정사각형으로 나누어 재귀적으로 쿼드 압축 결과를 구한다. 4개 정사각형의 각 꼭직점은 (x,..
2022. 8. 25.
[프로그래머스 lv2] 삼각 달팽이 풀이
✅ 프로그래머스의 모든 문제와 해설 보기[클릭] 해설 방향을 회전하며 좌표를 지나는 전형적인 시뮬레이션 문제이다. 삼각형에서 규칙을 찾아보면, n칸, n-1칸, n-2칸, ... 1칸씩 같은 방향으로 이동하면서 0번, 1번, 2번으로의 회전이 반복된다. 따라서 i = n 부터 i = 1까지 외부 반복문을 수행하면서 내부에서는 i칸만큼 같은 방향으로 이동하고 숫자를 기록하면 된다. 이 때, i번째 칸을 이동할 때는 방향이 전환되므로, 방향 변수 dir을 다음 회전 방향으로 변경하여 이동하도록 한다. 초기 좌표를 x = 0, y = 0 이라고 했을 때, 0번 방향으로의 움직임은 (+1, -0.5), 1번 방향으로의 움직임은 (0, +1), 2번 방향으로의 움직임은 (-1, -0.5)가 된다. 좌표를 이동하면..
2022. 8. 24.