https://www.acmicpc.net/problem/17252
1. 아이디어
N부터 N보다 작은 3의 제곱 수 중 가장 큰 수를 빼는 과정을 반복하면 간단하게 해결할 수 있다.
2. 문제풀이
2,147,483,647보다 작은 3의 제곱수 중 가장 큰 수가 1162261467인 점을 활용해 for문에서 인덱스를 3으로 나눠가며 계산하는 방식으로 구현했다.
3. 코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
if (N == 0) {
System.out.println("NO");
return;
}
for (int i = 1162261467; i > 0; i /= 3) {
if (N >= i) N -= i;
}
if (N == 0) System.out.println("YES");
else System.out.println("NO");
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 2252번 - 줄 세우기 [Java] (0) | 2025.02.02 |
---|---|
[백준] 13023번 - ABCDE [Java] (0) | 2025.02.02 |
[백준] 1987번 - 알파벳 [Java] (0) | 2025.02.02 |
[백준] 11723번 - 집합 [Java] (0) | 2025.02.02 |
[백준] 2845번 - 파티가 끝나고 난 뒤 [Java] (0) | 2025.02.02 |