코딩테스트/BOJ

[BOJ] 1769 3의 배수 - JAVA

5월._. 2023. 6. 6.
728x90

1. 문제

 

1769번: 3의 배수

문제가 잘 풀리지 않을 때, 문제를 바라보는 시각을 조금만 다르게 가지면 문제가 쉽게 풀리는 경험을 종종 해 보았을 것이다. 여러 가지 방법이 있지만 그 중 하나로 우리가 풀고 싶은 문제를

www.acmicpc.net

큰 수 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. 결과

댓글