[백준 알고리즘] Node.js 1475. 방 번호

2023. 8. 3. 15:22코딩연습

1. 문제

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

 

1475번: 방 번호

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

www.acmicpc.net

 

2. 풀이

  1. 첫째 줄에 방 번호 N이 주어진다.
  2. 6이나 9는 뒤집어서 사용할 수 있다.
  3. 각각의 숫자 사용 개수를 객체 배열에 넣어놓고, 그 중 가장 큰 수의 값을 찾는다.
  4. 단, 6이나 9는 뒤집어서 사용가능하기 때문에 6의 사용 개수와 9의 사용 개수를 비교하여 더 적은 쪽에 사용 횟수를 추가한다.
const N = require('fs').readFileSync('/dev/stdin').toString().trim().split("");

// 플라스틱 숫자 세트를 위한 객체 배열
const set = {};

// 0~9까지 몇개 있는지 확인하기 위한 기본 세팅
for(let i = 0; i < 10; i++){
    set[i] = 0;
}

// 받은 숫자값을 반복시킴.
N.forEach(num => {
    // 만약 6이나 9를 받으면
    if(num === '6' || num === '9'){
        let six = set[6]; // 6의 사용 개수
        let nine = set[9]; // 9의 사용 개수
        
        // 만약 6의 개수가 9의 개수보다 적다면 6의 개수 증가, 아니면 9 개수 증가
        if(six < nine) set[6]++;
        else set[9]++;
    } else {
        set[num]++; // 나머지 숫자 개수 증가.
    }
})

// 최대값을 구하기 위해 Array로 변경.
const arr = Object.keys(set).map((key) => set[key]);

// 최대값 출력.
console.log(Math.max.apply(null, arr))

 

3. 정리

  • 이번에 처음으로 apply() 메서드를 사용해봤다. 매번 배열을 spread 연산자를 사용했었는데 간단하게 사용할 수 있어서 괜찮은 거 같다.