문제 

다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)

 

입력

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.

 

출력 

첫째 줄에 필요한 세트의 개수를 출력한다.

 

예제

입력:

9999

출력

2

 

 

코드

let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('');
let numArr = [10];

input.sort((a, b) => a-b);

for(let i=0; i<10; i++) {
    numArr[i] = input.lastIndexOf(i.toString())+1;
    if(numArr[i] != 0) {
        input.splice(0, numArr[i]);
    }
}

let nine = numArr.splice(9, 1, 0)[0];
let six = numArr.splice(6, 1, 0)[0];
let maxNum = Math.max(...numArr);

if(Math.ceil((nine+six)/2) >= maxNum) console.log(Math.ceil((nine+six)/2));
else console.log(maxNum);



설명

문제가 생각보다 간단했다. 6과 9의 개수를 더하고 2로 나눠서 올림한 값이 6, 9를 제외한 숫자 중에서 개수가 제일 많은 숫자의 개수를 비교해서 더 큰 수를 출력하면 된다.  

 

 

+ Recent posts