컴굥일지
[BOJ/백준 1074][C++] Z 본문
반응형
문제
https://www.acmicpc.net/problem/1074
문제 내용
사진에 보이는 것처럼 방문을 한다고 할 때, r, c를 방문했을 때의 값을 구하면 된다.
문제 풀이
2^N * 2^N 크기의 2차원 배열을 4등분하여 r, c가 어느 사분면에 속해있는지 체크하고 똑같이 재귀적으로 계산해 나가면 된다.
코드
#include <iostream>
using namespace std;
int visit(int N, int r, int c) {
if (N == 0) { // N이 0인경우 배열 자체가 없음
return 0;
}
int length = (1 << (N - 1));
if (r < length && c < length) { // 1사분면
return visit(N - 1, r, c);
} else if (r < length && c >= length) { // 2사분면
return visit(N - 1, r, c - length) + length * length;
} else if (r >= length && c < length) { // 3사분면
return visit(N - 1, r - length, c) + 2 * length * length;
} else { // 4사분면
return visit(N - 1, r - length, c - length) + 3 * length * length;
}
}
int main() {
int N, r, c;
cin >> N >> r >> c;
cout << visit(N, r, c);
}
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[BOJ/백준 1182][C++] 부분수열의 합 (0) | 2023.07.15 |
---|---|
[BOJ/백준 1012][C++] 유기농 배추 (0) | 2023.07.15 |
[BOJ/백준 11729][C++] 하노이 탑 이동 순서 (0) | 2023.07.14 |
[BOJ/백준 2178][C++] 미로 탐색 (0) | 2023.07.13 |
[BOJ/백준 10431][C++] 줄세우기 (0) | 2023.07.12 |
Comments