문제가 쪼금 복잡합니다만
해석해보면
양수 N을 재조합해서
30의 배수가 되는
가장 큰 수를 출력하세요
여기서
30의 배수는
3의 배수 이면서 10의 배수인 수입니다
3의 배수 = 각 자리수의 합이 3의 배수이다
10의 배수 = 일의 자리 숫자가 0이다
이건 의무교육을 정상적으로 받았다면
알 수 있으므로
핵심은
"가장 큰" 이 되겠네요
코드입니다
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String str = scan.next();
int n = str.length();
int[] arr = new int[n];
for(int i=0; i<n; i++) {
arr[i] = Integer.parseInt(str.substring(i, i+1));
}
Arrays.sort(arr);
if (arr[0]==0) {
int sum=0;
for(int j=1; j<n; j++) {
sum += arr[j];
}
if(sum%3 == 0) {
StringBuilder sb = new StringBuilder();
for(int k=n-1; k>=0; k--) {
sb.append(arr[k]);
}
System.out.println(sb);
}else {
System.out.println(-1);
}
}else {
System.out.println(-1);
}
}
}
저는 가장 먼저
숫자를 하나하나 입력받아
리스트에 넣어줬습니다
그리고
Arrays.sort()를 이용해
입력받은 숫자들을 크기순으로 정렬해줬습니다
arr[0] == 0 이여야지
10의 배수란 뜻이 되고요
sum%3 == 0 이여야지
3의 배수란 뜻이 됩니다
정렬된 arr를 차례대로 출력하면
그게 가장 큰 수가 됩니다
'백준 문제풀기 > JAVA' 카테고리의 다른 글
[백준 10757 JAVA 자바] 큰 수 A+B (0) | 2023.08.15 |
---|---|
[백준 10718 JAVA 자바] We love kriii (0) | 2023.08.15 |
[백준 10430 JAVA 자바] 나머지 (0) | 2023.08.13 |
[백준 10172 JAVA 자바] 개 (0) | 2023.08.13 |
[백준 10171 JAVA 자바] 고양이 (0) | 2023.08.13 |