https://st-lab.tistory.com/230
[백준] 1992번 : 쿼드트리 - JAVA[자바]
www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문
st-lab.tistory.com
https://www.acmicpc.net/board/view/82431
글 읽기 - (java) 메모리초과 질문입니다
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
https://www.acmicpc.net/board/view/64976
글 읽기 - [Python] 시간 초과가 납니다. 더 줄일 방법이 있을까요?
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
static int N,r,c;
static int cnt = 0;
static int result = 0;
public static void main(String arg[]) 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 a = (int)Math.pow(2, N);
dive(0,0,a);
System.out.println(result);
}
static void dive(int x, int y, int size) {
if(size == 1) {
if(c == x && r == y)
result = cnt;
cnt++;
return;
}
int mid = size / 2;
if(x+mid<= c && y+mid <= r) {
cnt += 3*(mid * mid);
dive(x+mid, y+mid, mid);
}
else if(y+mid <= r) {
cnt += 2* (mid * mid);
dive(x, y+mid, mid);
}
else if(x+mid <= c) {
cnt += mid * mid;
dive(x+mid, y, mid);
}
else {
dive(x, y, mid);
}
}
}
'백준' 카테고리의 다른 글
[백준] 6064 카잉 달력 [자바] (0) | 2022.04.13 |
---|---|
[백준] 1107 리모컨 [자바] (0) | 2022.04.09 |
[백준] 1707 이분 그래프 [자바] (0) | 2022.03.17 |
[백준] 4195 친구 네트워크 [자바] (0) | 2022.03.14 |
[백준] 1033 칵테일 [자바] (0) | 2022.03.03 |