시뻘건 개발 도전기

[10610번] 30 본문

Business logic/백준

[10610번] 30

시뻘건볼때기 2020. 4. 10. 22:43
반응형

문제 기출 : [https://www.acmicpc.net/problem/10610]

 

 

풀이 방법

[그리디 알고리즘] 접근

 

30의 배수들의 특징을 알면 쉽게 접근 가능하다.

'0'이 하나라도 있고 각 자리수의 합이 3의 배수이면 (3x10=30 이니까) 30의 배수라고 할 수 있다.

 

당연하게도 0으로 끝나야 하기 때문에 주어진 N에 '0'이 없으면 불가능하므로 바로 -1을 출력하고 종료하자.

 

주어진 N을 각각 자리수 별로 나누어 모두 더한 후 이 값이 3으로 나누어 떨어지지 않으면 바로 -1을 출력하고 종료하자.

 

문제에서 최대값을 원하고 있다. 그렇다면 sort하고 고대로 출력하면 끝.

 

문제 풀이

public class Main {
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String answer = "";
		
		try {
			String strN = br.readLine();
			
			if(strN.indexOf("0") == -1) {
				System.out.println("-1");
				return;
			}
			
			char[] charN = strN.toCharArray();
			
			int threeMul = 0;
			for (int i = 0; i < charN.length; i++) {
				threeMul += Integer.parseInt(String.valueOf(charN[i]));
			}
			
			if(threeMul % 3 != 0) {
				System.out.println("-1");
				return;
			}
			
			Arrays.sort(charN);
			
			for (int i = charN.length-1; i >= 0 ; i--) {
				answer = answer.concat(String.valueOf(charN[i]));
			}
			
			System.out.println(answer);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
반응형

'Business logic > 백준' 카테고리의 다른 글

[1138번] 한 줄로 서기  (0) 2020.04.12
[1120번] 문자열  (0) 2020.04.11
[11047번] 동전 0  (0) 2020.04.11
[1080번] 행렬  (0) 2020.04.10
[1049번] 기타줄  (0) 2020.04.10
Comments