728x90
https://www.acmicpc.net/problem/2163
메모리: 14,248 KB , 시간: 104 ms
사용 알고리즘: 사칙연산, 수학, 재귀
728x90
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
// 초콜릿 쪼개기
System.out.println(splitChoco(N, M));
}
private static int splitChoco(int w, int h) {
// 이미 한 조각이라면
if(w == 1 && h == 1) return 0;
if(h > 1) { // 세로로 먼저 쪼개기
if(h % 2 == 0) { // 세로가 짝수라면
return 2 * splitChoco(w, h / 2) + 1;
}
else { // 홀수라면
return splitChoco(w, h / 2) + splitChoco(w, h / 2 + 1) + 1;
}
}
else { // 세로로 다 쪼갰다면 가로 쪼개기
if(w % 2 == 0) { // 가로가 짝수라면
return 2 * splitChoco(w / 2, 1) + 1;
}
else { // 홀수라면
return splitChoco(w / 2, 1) + splitChoco(w / 2 + 1, 1) + 1;
}
}
}
}
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[백준, BOJ 2293] 동전 1 (java) (0) | 2024.12.12 |
---|---|
[백준, BOJ 1357] 뒤집힌 덧셈 (java) (0) | 2024.11.17 |
[백준, BOJ 1515] 수 이어 쓰기 (java) (0) | 2024.11.10 |
[백준, BOJ 2776] 암기왕 (java) (0) | 2024.11.08 |
[백준, BOJ 21921] 블로그 (java) (1) | 2024.11.07 |