백준/문자열
10610 (문제 제목 : 30)
have a good time
2021. 10. 18. 19:55
https://www.acmicpc.net/problem/10610
10610번: 30
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String [] input = br.readLine().split("");
int sum=0;
for(int i=0; i<input.length;i++) {
sum+= Integer.parseInt(input[i]);
}
System.out.println( multiple(sum,input));
}
public static String multiple(int sum, String[]input) {
if(sum%3!=0) {
return "-1";
}
if(!Arrays.asList(input).contains("0")) {
return "-1";
}
Arrays.sort(input,Collections.reverseOrder());
// 내림차순 정렬
StringBuilder sb = new StringBuilder();
for(int j=0;j<input.length;j++) {
sb.append(input[j]);
}
return sb.toString();
// StringBuilder를 String 형으로
}}
30의 배수가 되기 위해서
1) 모든 숫자의 합이 3의 배수
2) 0을 반드시 포함하고 있어야 함
* 내가 운 좋게 입력을 String으로 받아서 문제되지 않았으나,
문제의 입력값이 최대 10^5 개의 숫자로 구성되어 있기 때문에 int 형, 실수형인 long형으로 받으면 문제가 된다고 한다.
유의하기
참고자료 : https://pangsblog.tistory.com/87
[백준 10610] - [그리디알고리즘] - 30 (JAVA)
문제 링크 : https://www.acmicpc.net/problem/10610 이 문제는 그리디 알고리즘 문제 중에서 어려운 편에 속하는 문제이다. 문제 자체에 오해 할 수 있는 요소가 존재해서 다들 잘못 이해 하고 접근하다가
pangsblog.tistory.com