
-Code
import java.io.*;
import java.util.*;
public class BOJ32952 {
public static void main(String[] args) throws Exception {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
long r = Long.parseLong(st.nextToken());
double k = Double.parseDouble(st.nextToken());
double m = Double.parseDouble(st.nextToken());
long count = (long) (m / k);
// 2의 62승이 넘으면 long의 범위를 넘어가서 0
if (count > 62) {
System.out.println(0);
} else {
while (count > 0) {
r /= 2;
count--;
}
System.out.println(r);
}
}
}
파이썬으로 이전에 알고리즘을 푼 경험이 있어서 ceil을 통해서 계산하려 했으나 여러 문제가 발생했습니다. long범위를 초과하는 등 문제가 발생하여 하나하나 계산하는 방법이 맞다는 것을 알았습니다. 또한 하나하나 계산하다 보면 시간 초과가 생기는데 이 부분이 2씩 나눠지므로 2의 63승부터는 long의 범위를 초과하는 것을 알게 되어 무조건 0을 반환하게 하면 해결되었습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 2579번 계단 오르기 (0) | 2026.01.16 |
|---|---|
| [프로그래머스/Java] 베스트앨범 (0) | 2026.01.15 |
| [백준/Java] 11054번 가장 긴 바이토닉 부분 수열 (0) | 2026.01.14 |
| [백준/Java] 10844번 쉬운 계단 수 (0) | 2026.01.14 |
| [프로그래머스/Java] 의상 (0) | 2026.01.14 |