문제 링크
https://www.acmicpc.net/problem/10610
접근 방법
처음엔 어렵게 생각했는데 30의 배수를 구하는 방법을 생각하면 된다.
- 끝은 0으로 끝나야 함
- 각 자리수의 합이 3의 배수여야 한다
그래서 입력 받은 수를 문자열로 받아 char 배열로 만들고 정렬했다.
내림차순으로 접근해서 가장 큰 수를 만들었음.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//0이 포함되어야 30의 배수를 만들 수 있다.
//각 자리의 합이 3의 배수여야 30의 배수를 만들 수 있다.
//1. 입력받은 문자열을 0~9까지의 카운트 배열에 입력하고 총합 계산
String num = br.readLine();
char[] arr = num.toCharArray();
Arrays.sort(arr);
int sum = 0;
StringBuilder sb = new StringBuilder();
for (int i = num.length() - 1; i >= 0; i--) {
sum += arr[i] - '0';
sb.append(arr[i] - '0');
}
//2. 0을 포함하는지, 총합이 3의 배수인지 확인
System.out.println(num.contains("0") && sum % 3 == 0 ? sb : -1);
}
}
'Problem Solving > BOJ' 카테고리의 다른 글
| [백준 Java] 4673 셀프 넘버 (0) | 2023.03.24 |
|---|---|
| [백준 Java] 16953 A → B (0) | 2023.03.23 |
| [백준 Java] 13305 주유소 (0) | 2023.03.17 |
| [백준 Java] 1946 신입 사원 (0) | 2023.03.16 |
| [백준 Java] 10162 전자레인지 (0) | 2023.03.16 |