Algorithm, boj, 30(10610)

문제유형

  • greedy

    해결

  • 3의 배수를 구하는 문제이다
  • 3,6,9,12,15,18… 3의 배수는 각자리 수의 합이 3의 배수가 된다
package org.doit;

import java.io.*;
import java.util.*;

public class test10610_greedy_30 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String N = br.readLine();
		if(!N.contains("0")) System.out.println("-1");
		else {
			int[] numberCount = new int[10];
			int sum=0;
			for(int i=0; i<N.length(); i++) {
				int num = Integer.parseInt(N.charAt(i)+"");
				numberCount[num]++;
				sum += num;
			}

			// 각자리를 더한 값이 3의 배수이면 이 숫자는 3의 배수이다!!!
			if(sum  % 3 == 0) {
				// 가장 큰수를 구해야 하므로 제일 큰수부터 출력한다
				for(int i=9; i>=0;i--) {
					// 제일 큰 수의 개수만큼 출력한다
					for(int j=0; j<numberCount[i]; j++) {
						System.out.print(i);
					}

				}
			}
			else
				System.out.println("-1");
		}


	}

}


Reference