코딩테스트

[백준] 방 번호 (JS)

여유로운 프론트엔드 개발자 2024. 10. 4. 15:30

문제

https://www.acmicpc.net/problem/1475

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

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

입력

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

출력

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

풀이

1. 길이가 10인 배열 생성 후 0으로 초기화한다.

2. 방 번호와 매칭되는 인덱스의 요소를 1씩 추가한다.

3. 6과 9는 뒤집어서 같은 값으로 볼 수 있으므로 요소를 더한 후 2로 나누고 반올림한다. 이 때 6 or 9에 그 값을 저장하고, 나머지 요소는 0으로 초기화한다.

4. 가장 여러번 사용한 방 번호의 값이 필요한 세트 개수의 최솟값이 된다.

const input = require("fs").readFileSync(0, "utf8").toString().trim();  // 백준 환경에서 입력 처리

Solution = (input) => {
    const array = Array.from({ length: 10 }, () => 0);
    
    for (let i = 0; i < input.length; i++) {
        array[input[i]]++;
    }
    
    const sixNine = array[6] + array[9];
    array[6] = Math.ceil(sixNine / 2);
    array[9] = 0;
    
    console.log(Math.max(...array));
}

Solution(input);

결론

단순 구현 문제이다.
배열에 사용되는 방 번호의 count를 저장하면 쉽게 풀 수 있다.