728x90
package a0817;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main_BOJ_Z_서울_12반_이서영 {
static int n,r,c;
static int order =0;
static int answer =-1;
public static void search(int tn, int x, int y) {
if(answer!=-1) {return;}
if(x==r && y==c) { //만약 x가 r이고 y가 c라면
answer = order; //몇번째인지 저장
return;
}
if(x<=r && r<x+tn && y<=c && c<y+tn) { //r이 x와 x+tn 사이에 , y가 c와 c+tn 사이에 있는 경우에만 분할을 해서 접근한다.
search(tn/2,x,y); //위왼 사각형
search(tn/2,x,y+tn/2); //위오 사각형
search(tn/2,x+tn/2,y); // 아래왼 사각형
search(tn/2,x+tn/2,y+tn/2); // 아래오 사각형
}
else {
order= order+(tn*tn); //tn*tn개수 만큼 지나왔다.
}
}
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st =new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
r = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
int tn = 2<<n; //2의 n승
search(tn,0,0);
System.out.println(answer);
}
}
'백준' 카테고리의 다른 글
쿼드트리-1992번 (Java) (0) | 2021.08.22 |
---|---|
이중우선순위큐 (0) | 2021.04.05 |
찾기 - KMP 알고리즘 (0) | 2021.04.02 |
인구이동 (0) | 2021.01.25 |