https://www.acmicpc.net/problem/10610
- 사용언어 : node.js
- 알고리즘 : 수학, 문자열, 그리디 알고리즘, 정렬, 정수론
- Solved.ac Tier : Bronze III
node.js 코드
1. 문제 정리
미르코라는 친구가 30이라는 수를 좋아해서 입력 받은 값들을 섞어서 30의 배수가 되는 가장 큰 수를 찾으려고 한다.
첫 접근을 0이 포함되지 않으면 30의 배수가 될 수 없기 때문에 0이 들어가있다면 '-1'로 리턴 해주었다.
그 뒤에 숫자 하나하나를 split() 메서드를 통해 나눠주고 하나하나 배열로 만들어 주었다.
ex) 30 ==> [ 3, 0 ]
각 자리수의 합 % 3을 통해 이 숫자가 3의 배수인지 알아 보았다. 아닌 놈들도 '-1'로 리턴
그리고 최대한 큰 수로 만들어 주기 위해 sort 후 출력 해주었다.
2. 완성 코드
const fs = require('fs');
let input = fs.readFileSync("/dev/stdin").toString().trim();
if(!input.split('').includes('0')){
console.log(-1);
}
else{
let arrTemp = input.split('').map(e => parseInt(e))
let sumOfInput = arrTemp.reduce((acc,v)=>acc+v)
if(sumOfInput % 3 == 0){
arrTemp.sort((a,b)=>b-a)
console.log(arrTemp.join(""))
}
else{
console.log(-1);
}
}
'백준 알고리즘 > Lang-node.js' 카테고리의 다른 글
[백준/node.js] 1026번 보물 (0) | 2022.03.19 |
---|---|
[백준/node.js] 1439번 뒤집기 (0) | 2022.03.19 |
[백준/node.js] 1789번 수 들의 합 (0) | 2022.03.18 |
[백준/node.js] 5585번 거스름돈 (0) | 2022.03.18 |
[백준/node.js] 24262번 알고리즘 수업 - 알고리즘의 수행 시간 1 (0) | 2022.01.25 |