마라톤에 참가한 선수 이름 배열 participant와 완주한 선수 이름 배열 completion이 주어져요. 완주하지 못한 선수는 딱 한 명이에요. 그 선수의 이름을 반환해요.
동명이인이 있을 수 있어요. 그래서 '완주자 목록에 없는 이름'을 찾는 방식은 틀려요. 이름이 몇 번 나왔는지까지 맞춰야 해요.
무슨 도구를 꺼낼지 스스로 고르는 것이 이번 주의 목적이에요. 이 문제는 어느 주차의 도구로 풀리는지 먼저 생각해 보세요.
예시
예시 1
예시 2
제한 사항
- 1 ≤ participant.length ≤ 100,000
- completion.length = participant.length - 1
- 이름은 1자 이상 20자 이하의 영소문자예요.
- 완주하지 못한 선수는 반드시 한 명이에요.
참가자를
{ 이름: 인원수 } 맵으로 세고, 완주자마다 하나씩 빼세요. 마지막에 개수가 0이 아닌 이름이 답이에요. 정렬해서 앞에서부터 짝을 맞춰 보는 풀이도 가능해요 — 7주차의 예고편이에요.javascriptCopy codefunction unfinishedPlayer(participant, completion) {const count = new Map();for (const name of participant) count.set(name, (count.get(name) ?? 0) + 1);for (const name of completion) count.set(name, count.get(name) - 1);for (const [name, n] of count) {if (n > 0) return name;}return "";}
이전 문제가장 긴 연속 수열
다음 문제카펫 만들기
예시 테스트만 실행 (Cmd/Ctrl+Enter)
숨김 테스트까지 채점 (Cmd/Ctrl+Shift+Enter)
에디터를 불러오고 있어요…
코드를 작성하고Ctrl↵를 눌러 예시 테스트를 확인해 보세요.