반응형
출처: www.acmicpc.net/problem/1074
1074번: Z
한수는 2차원 배열 (항상 2^N * 2^N 크기이다)을 Z모양으로 탐색하려고 한다. 예를 들어, 2*2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, 2차원 ��
www.acmicpc.net
풀이과정
1. 작은 단위부터 세어 나가면 될 것이라 생각하는데 좌표 처리를 어떻게 해야할까...
2. N 부터 N제곱 최대 단위까지 카운팅한다.
풀이코드
package Test;
import java.util.*;
import java.io.*;
public class MainNew {
public static int N, X, Y, result = 0;
// y: 가로 , x: 세로
public static void solve(int n, int x, int y) {
// 4등분 되지 않는 케이스에서 덧셈 처리 (2^1 인 경우)
if (n == 2) {
// Z 방향 처리 중에 구하는 좌표 있으면 함수 종료
if (x == X && y == Y) {
System.out.println(result);
return;
}
result++;
if (x == X && y + 1 == Y) {
System.out.println(result);
return;
}
result++;
if (x + 1 == X && y == Y) {
System.out.println(result);
return;
}
result++;
if (x + 1 == X && y + 1 == Y) {
System.out.println(result);
return;
}
result++;
return;
}
solve(n / 2, x, y);
solve(n / 2, x, y + n / 2);
solve(n / 2, x + n / 2, y);
solve(n / 2, x + n / 2, y + n / 2);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
X = sc.nextInt();
Y = sc.nextInt();
solve((int) Math.pow(2, N), 0, 0);
}
} // MainNew
memo
재귀 + x,y 좌표 고려하는 문제...
2시간동안 봤으나 결국 나동빈 깃헙 코드를 참조하였다..
재귀는 이제 조금은 알 것 같다.
반응형
'머리맞대는이야기 > 백준' 카테고리의 다른 글
| [1966] 프린터 큐 (0) | 2020.10.05 |
|---|---|
| [7490] 0 만들기 (0) | 2020.10.04 |
| [2747] 피보나치 수 (0) | 2020.10.03 |
| [1939] 중량제한 (0) | 2020.09.30 |
| [1991] 트리순회 (0) | 2020.09.30 |