[BOJ 10610] 30 - Java

8822 단어 BOJ 10610BOJ 10610

key points

  • 10의 배수는 0으로 끝난다.
  • 3의 배수는 각 자리의 수를 더 한 값이 3의 배수이다.
  • 1~10의 배수는 배수판정법이라는 것이 존재한다.


Solution

  1. 3의 배수 판정을 위해 각 자리의 수를 더한다.
  2. contains 메서드를 이용해서 0이 포함되어 있는지 확인한다.
  3. N을 string 으로 받았기에 char 배열로 변환해서 Arrays 패키지에 있는 sort 메서드로 오름차순 정렬을 한다.
  4. 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

좋은 웹페이지 즐겨찾기