[백준] 30 10610번
나의 풀이
public class Thirty {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String N = br.readLine();
makeThirty(N);
}
static private void makeThirty(String num) {
StringBuilder sb = new StringBuilder();
char[] chars = num.toCharArray();
Arrays.sort(chars);
int sum = 0;
for(int i = chars.length - 1; i > -1; i--) {
sb.append(chars[i]);
sum += chars[i] - '0';
}
if(!num.contains("0") || sum % 3 != 0) {
System.out.println(-1);
} else {
System.out.println(sb);
}
}
}
- 30의 배수가 되려면 조건이 있다.
0을 포함해야 하며 각 자리수의 합은 3의 배수가 되어야 한다.
- 입력받은 값을 char 배열로 만들어주고, 해당 배열을 오름차순 정렬 시킨다.
- 그리고 가장 큰 수를 구해야 하기 때문에 뒤에서부터 차례대로 각 자리수를 더해주고 StringBuilder에 넣어준다.
- 만약 N의 값에 0이 포함되어 있지 않거나, 각 자리수의 합이 3의 배수가 아니라면, -1을 출력하고, 아니면 sb의 값을 출력한다.