백준 25757번 임스와 함께하는 미니게임 Node.js

찌니월드·2025년 4월 15일

문제

임스가 미니게임을 같이할 사람을 찾고 있습니다.

플레이할 미니게임으로는 윷놀이 YY, 같은 그림 찾기 FF, 원카드 OO가 있습니다. 각각 2, 3, 4 명이서 플레이하는 게임이며 인원수가 부족하면 게임을 시작할 수 없습니다.

사람들이 임스와 같이 플레이하기를 신청한 횟수 NN과 임스가 플레이할 게임의 종류가 주어질 때, 최대 몇 번이나 임스와 함께 게임을 플레이할 수 있는지 구하시오.

임스와 여러 번 미니게임을 플레이하고자 하는 사람이 있으나, 임스는 한 번 같이 플레이한 사람과는 다시 플레이하지 않습니다.

임스와 함께 플레이하고자 하는 사람 중 동명이인은 존재하지 않습니다. 임스와 lms0806은 서로 다른 인물입니다.

입력

첫 번째 줄에는 사람들이 임스와 같이 플레이하기를 신청한 횟수 NN과 같이 플레이할 게임의 종류가 주어진다. (1N100000)(1 \le N \le 100\,000)

두 번째 줄부터 NN개의 줄에는 같이 플레이하고자 하는 사람들의 이름이 문자열로 주어진다. (1(1 \le 문자열 길이 20)\le 20)

사람들의 이름은 숫자 또는 영문 대소문자로 구성되어 있다.

출력

임스가 최대로 몇 번이나 게임을 플레이할 수 있는지 구하시오.

예제 입력 1

7 Y
lms0806
lms0806
exponentiale
lms0806
jthis
lms0806
leo020630

예제 출력 1

4

나의 풀이

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

const [n, gameType] = input[0].split(" ");
const players = new Set(input.slice(1));

let playSize;

switch (gameType) {
  case "Y": {
    playSize = 2;
    break;
  }
  case "F": {
    playSize = 3;
    break;
  }
  case "O": {
    playSize = 4;
    break;
  }
}

const answer = Math.floor(players.size / (playSize - 1));
console.log(answer);

풀이 설명

임스는 한 번 같이 플레이한 사람과는 다시 게임을 하지 않으므로, 신청자 중 중복된 이름은 제외해야 한다. 중복을 제거하기 위해 Set 자료구조를 활용했다.

게임은 각각 정해진 인원 수가 있어, 게임 종류에 따라 필요한 인원 수를 playSize 변수에 저장했다.

게임을 한 번 진행하려면 임스를 포함한 총 playSize명이 필요하므로, 신청자 수를 (playSize - 1)로 나눈 몫을 계산하면 임스가 함께할 수 있는 게임 횟수를 구할 수 있다!

profile
Front-End Developer

0개의 댓글