728x90
반응형
https://www.acmicpc.net/problem/10610
3의 배수의 특성을 알면 간단하게 풀 수 있다.
N의 모든 자릿수의 값을 더한 값이 3의 배수이면 N는 3의 배수이다.
문제에서는 3의 배수가 아니라 30의 배수여야 하는데,
3의 배수인 숫자에 0 하나 붙여주면 간단하게 30의 배수를 만들 수 있다. 따라서
- 모든 자릿수의 합이 3의 배수
- 숫자에 0이 존재
두 조건을 만족시키면 된다.
가장 큰 수를 만들기 위해서는 각 자릿수의 값을 내림차순으로 정렬하면 된다.
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class P10610 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String num=sc.next();
Integer[] n = new Integer[num.length()];
int sum=0;
for(int i=0;i<num.length();i++) {
n[i]=num.charAt(i)-'0';
sum+=n[i];
}
Arrays.sort(n, Collections.reverseOrder());
if(sum%3!=0 || n[num.length()-1]!=0) {
System.out.println(-1);
return;
}
for(int i:n) {
System.out.print(i);
}
}
}
728x90
반응형
'코딩 > 백준-자바' 카테고리의 다른 글
[자바] 백준 2864번: 5와 6의 차이 (0) | 2023.01.02 |
---|---|
[자바] 백준 1041번: 주사위 (0) | 2023.01.02 |
[자바] 백준 1449번: 수리공 항승 (0) | 2023.01.02 |
[자바] 백준 2812번: 크게 만들기 (0) | 2023.01.01 |
[자바] 1107번: 리모컨 (0) | 2023.01.01 |
댓글