728x90
1. 문제
큰 수 X가 주어졌을 때, 앞에서 설명한 문제 변환의 과정을 몇 번 거쳐야 Y가 한 자리 수가 되어, X가 3의 배수인지 아닌지를 알 수 있게 될지를 구하는 프로그램을 작성하시오.
2. 풀이
1. 숫자를 문자열로 받는다. 100만자리 이하의 수까지 입력으로 들어올 수 있기 때문이다.
2. 만약 입력받은 숫자가 1글자라면 탐색할 필요 없이 3의 배수인지 체크하고 끝낸다.
3. char 배열 X를 하나씩 change에 더한다.
4. count는 1에서 시작한다(3에서 한 번 변환했으므로).
5. change의 자릿수가 1이 될 때까지 반복하면서 새 숫자를 만든다. count도 +1한다.
6. count와 3의 배수인지 아닌지 체크해서 맞는 문자열을 출력한다.
import java.io.*;
public class BOJ_1769_3의배수 {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
char[] X = in.readLine().toCharArray();
if(X.length==1){
System.out.println(0+check(X[0]-'0'));
return;
}
int change = 0;
for(char x:X) change += x-'0';
int count = 1;
int num;
while(change>=10){
num = change;
change = 0;
while(num>0) {
change += num%10;
num/=10;
}
count++;
}
System.out.println(count+check(change));
}
public static String check(int x){
return x%3==0?"\nYES":"\nNO";
}
}
3. 결과
'코딩테스트 > BOJ' 카테고리의 다른 글
[BOJ] 1254 팰린드롬 만들기 - JAVA (0) | 2023.06.07 |
---|---|
[BOJ] 9996 한국이 그리울 땐 서버에 접속하지 - JAVA (0) | 2023.06.07 |
[BOJ] 4358 생태학 - JAVA (0) | 2023.06.06 |
[BOJ] 2096 내려가기 - JAVA (0) | 2023.06.05 |
[BOJ] 1013 Contact - JAVA (0) | 2023.06.04 |
댓글