
문제
https://www.acmicpc.net/problem/25757

알고리즘 분류 : 자료구조 문자열 해시를 사용한 집합과 맵
문제 설명
문제는 꽤 어렵게 설명을 해놓은것같지만, 직접 코드로 풀기에는 매우 쉬운 문제였다.
문제 이해를 돕자면,
- 윷놀이는 2명이 플레이 / 같은 그림 찾기는 3명이 플레이 / 윷놀이는 4명이 플레이
- 사람들의 리스트가 주어지는데, 한번 같이 게임한사람하고는 그 이후부터 같이 플레이 하지 못한다.
- 주어진 사람들의 리스트로 임스가 최대로 가능한 게임 횟수를 출력해준다.
우선, 1번 조건에 의하여
윷놀이는 2명이 플레이하지만 2명 중 1명은 임스로 무조건 고정이고,
같은 그림 찾기는 3명이 플레이하지만 3명 중 1명은 임스로 무조건 고정,
윷놀이도 마찬가지로 4명중 1명은 임스로 무조건 고정
이후, 2번 조건에 의하여 이름이 여러개 있어도 한번밖에 플레이하지 못하므로 중복을 모두 제거하고 이름을 한개만 남기는 것이 유효하다.
따라서, 윷놀이에서 1번과 2번 조건에 의하여 임스는 lms0806, exponentiale, jthis, leo020630 총 4번 게임이 가능하다.
같은 그림 찾기에서 마찬가지로 임스는 lms0806, powergee, skeep194, tony9402, wider93, mageek2guanaah, jthis 중 2명을 짝을 지어주면 총 3번 게임이 가능하고 한명이 남지만 인원부족으로 플레이가 불가능하다. 따라서 총 3번이다.
원카드의 경우에도 같은 방법으로 구하면 2번이 가능하다.
이제 이 로직을 코드로 구현하면 되는데, 중복 제거는 중복된 값을 제거하는 Set를 쓰면되고,
게임 횟수는 단순히 윷놀이는 /1 한 몫, 같은 그림 찾기는 /2 한 몫, 윷놀이는 /3 한 몫이다.
나의 풀이
// 임스와 함께하는 미니게임 | |
const readline = require("readline"); | |
const rl = readline.createInterface({ | |
input: process.stdin, | |
output: process.stdout, | |
}); | |
let input = []; | |
let num = 0; | |
let gameType = ""; | |
rl.on("line", function (line) { | |
input.push(line); | |
[num, gameType] = input[0].split(" "); | |
if (Number(num) + 1 === input.length) { | |
rl.close(); | |
} | |
}).on("close", function () { | |
let arr = input.slice(1); | |
let peopleSet = new Set(arr); | |
let answer = 0; | |
if (gameType === "Y") { | |
answer = parseInt(peopleSet.size); | |
} else if (gameType === "F") { | |
answer = parseInt(peopleSet.size / 2); | |
} else { | |
answer = parseInt(peopleSet.size / 3); | |
} | |
console.log(answer); | |
process.exit(); | |
}); |
'Algorithm > Baekjoon' 카테고리의 다른 글
백준 21921번 - 블로그(Node.js/Javascript) (1) | 2025.06.04 |
---|---|
백준 2164번 - 카드2(Node.js/Javascript) (1) | 2025.06.01 |
백준 7568번 - 덩치(Node.js/Javascript) (1) | 2025.05.19 |
백준 11723번 - 집합(Node.js) (0) | 2025.05.12 |
백준 5073번 - 삼각형과 세 변(Node.js) (1) | 2025.05.03 |