치춘짱베리굿나이스
[백준] 10610 본문
30
문제
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다.
미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라.
입력
N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다.
출력
미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라.
풀이
const thirty = () => {
let input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("")
.map(Number)
.sort((a, b) => a - b);
let sum = 0;
const len = input.length;
if (input[0] !== 0) console.log("-1");
else {
for (let i = 0; i < len; i++) sum += input[i];
if (sum % 3) console.log("-1");
else console.log(input.reverse().join(""));
}
};
thirty();
반성회
- 오름차순으로 정렬했을 때 첫 번째 원소가 0이 아닐 경우 10의 배수가 아니므로 -1 출력
- 모든 숫자를 더했을 때 3의 배수가 아닐 경우 어떤 숫자 조합도 3의 배수가 될 수 없으므로 -1 출력
- 그 외의 경우 내림차순으로 출력
'Javascript + Typescript > 자바스크립트로 알고리즘풀기' 카테고리의 다른 글
[백준] 1531 (0) | 2022.03.10 |
---|---|
[백준] 1439 (0) | 2022.03.10 |
[백준] 1459 (0) | 2022.03.10 |
[백준] 1308 (0) | 2022.03.10 |
[백준] 1016 (0) | 2022.03.10 |
Comments