백준_방 번호_1475

Minji Lee·2025년 4월 22일
0

JS코딩테스트

목록 보기
109/122

방 번호

문제

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

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

입력

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

출력

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

예제 입력 1

9999

예제 출력 1

2

예제 입력 2

122

예제 출력 2

2

풀이 및 해설

출력값: 다솜이의 방 번호가 주어졌을 때, 필요한 숫자 세트(0~9)의 개수의 최솟값 구하기

  • 6과 9는 서로 뒤집어 사용 가능
  1. 각 숫자의 개수 파악
    → 이때, 6과 9는 뒤집어 사용 가능하므로 한 곳으로 몰아넣기(6으로 카운트)
  2. 6의 개수(9까지 포함)를 2로 나눈 올림으로 수정
    → 2개가 한 세트로 가능함
  3. 숫자 배열 중 가장 큰 개수 리턴

Code

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

const N = input[0].split('').map(Number); // 다솜이의 방 번호 N

const number = Array.from({ length: 10 }, () => 0); // 0부터 9까지 숫자 세트 배열 만들기
N.forEach((n) => {
  if (n === 6 || n === 9)
    number[6] += 1; // 6이랑 9는 뒤집어 사용 가능하므로 모두 6 인덱스에 넣어주기
  else number[n] += 1; // 나머지 숫자들은 해당 인덱스에 추가
});

number[6] = Math.ceil(number[6] / 2); // 6 인덱스의 갯수 2로 나눈 후 올림

console.log(Math.max(...number)); // 가장 큰 수 리턴(=필요한 숫자 세트 최솟값)

0개의 댓글