[BOJ 10610] 30 - Java



key points

  • 10の倍数はゼロで終了します.
  • 3の倍数は、桁数ごとに3を加えた倍数です.
  • 1-10の倍数は배수판정법です.

  • Solution

  • 3の倍数を判定するために、各ビット数が増加した.
  • contains
  • メソッドを使用して、0が含まれているかどうかを決定します.
  • Nが文字列として受信されたので、char配列に変換し、Arraysパケット内のsortメソッドを使用して昇順ソートします.
  • StringBuilderを使用して、先頭の要素から並べ替えて出力します.
  • Code

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    
    public class Main10610 {
        public static void main(String args[]) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
            /* Input */
            String N = br.readLine();
            
            /* 3의 배수 판정을 위해 각 자리 숫자를 더함 */
            int sum = 0;
            for(int i = 0; i < N.length(); i ++) {
                sum += N.charAt(i);
            }
    
            /* 10의 배수가 아니거나 3의 배수가 아니라면 */
            if (!N.contains("0") || sum % 3 != 0) {
                System.out.println("-1");
                return;
            }
    
            char[] array = N.toCharArray();
            // 오름차순 정렬
            Arrays.sort(array);
    
    		StringBuilder sb = new StringBuilder();
    		// 가장 큰 수를 만들어야 하므로, 맨 끝의 숫자를 맨 앞으로 옮겨서 저장한다.
    		for(int i = array.length - 1; i >= 0; i--) {
    			sb.append(array[i]);
    		}
            System.out.println(sb.toString());
            br.close();
        }
    }

    Result



    *を参照
    倍数判定法画像ソース:https://www.onlinemathlearning.com/rules-divisibility.html