Develop/백준 코딩테스트

백준 코딩테스트 10610 30 자바스크립트 node.js

codeGray 2022. 7. 7. 17:34
반응형

 

정답

let input= require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
sol(input)

function sol(input){
   let arr = input.toString().split('').map(i => +i);
   if(!arr.includes(0)){
        console.log(-1);
   }else{
        let sum = arr.reduce((cur,val) => cur+val, 0);
        if( sum % 3 !== 0){
            console.log(-1);
        }else{
            arr.sort((a,b)=>b-a);
            console.log(arr.join(''));
        }
   }
}

 

풀이

1. 30은 10 * 3  즉 10의 배수이면서 3의배수여야 한다. 일의자리가 0이 들어가지 않으면 10의 배수가 아님으로 -1 출력

2. 모든 숫자를 더하고 3으로 나누어 떨어지지 않으면 3의 배수가 아님 -1 출력

3. 위의 모든 조건을 만족하면 30의 배수이므로 내림차순으로 정렬 후 합쳐서 출력

 

배수 판정법

2의배수 : 일의 자리수가 0또는 짝수
3의배수 : 각 자리수의 합이 3의 배수
4의배수 : 끝의 두자리가 4의 배수
5의배수 : 일의 자리가 0 또는 5
6의배수 : 2의배수 이면서 3의배수
7의배수 : 7로 나누어서 나눠지면 7의배수
8의배수 : 끝의 세자리가 8의 배수
9의배수 : 각 자리수의 합이 9의 배수 ( 9의 배수이면 3의 배수이기도 하다)
10의배수 : 일의 자리수가 0

반응형