본문 바로가기

백준

[백준] 1074 Z [자바]

 


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