import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class BJ10610 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] sList = br.readLine().split("");
int l = sList.length;
int[] nums = new int[l];
int total = 0;
boolean chZero = false;
for (int i = 0; i < l; i++) {
if(sList[i].equals("0")){
chZero = true;
}
total += Integer.parseInt(sList[i]);
}
if(!chZero){
System.out.println(-1);
}
else{
if(total%3 != 0){
System.out.println(-1);
} else{
Arrays.stream(sList).sorted(Comparator.reverseOrder())
.forEach(System.out::print);
}
}
}
}
풀이
30의 배수에는 규칙이 있다.
일단 10의 배수여야 하니 0을 포함해야 하고,
3의 배수여야 하니 각 자리수를 더한 합이 3의 배수여야 한다.
※각 배수들의 규칙
- 2의 배수 판별법: 일의 자리수가 0,2,4,6,8 이면 2의 배수이다.
- 3의 배수 판별법: 각 자리수의 합이 3의 배수이면 3의 배수이다.
- 4의 배수 판별법: 끝의 두자리 수가 00이거나 4의 배수이면 4의 배수이다.
- 5의 배수 판별법: 일의 자리수가 0,5 이면 5의 배수이다.
- 6의 배수 판별법: 짝수이고, 각 자리수의 합이 3의 배수이면 6의 배수이다.
- 8의 배수 판별법: 끝의 세자리 수가 000이거나 8의 배수이면 8의 배수이다.
- 9의 배수 판별법: 각 자리수의 합이 9의 배수이면 9의 배수이다.
시간복잡도
O(N)
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준 2257] 화학식량 (0) | 2021.05.07 |
---|---|
[백준 5347] LCM (최소공배수) (0) | 2021.05.07 |
[백준1238] 파티 (0) | 2021.05.05 |
[백준14465] 소가 길을 건너간 이유 5 (0) | 2021.05.05 |
[백준1747] 소수&팰린드롬 (0) | 2021.05.05 |
댓글