728x90
문제 출처 : 프로그래머스 코딩테스트 연습 고득점 kit 해시 1번
( https://programmers.co.kr/learn/courses/30/parts/12077 )
문제 설명
마라톤 참가자 명단과 완주자 명단을 배열 형태로 받아 완주하지 못한 선수의 이름을 return 하도록
solution 함수를 작성해 주세요.
제한사항
- 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
- completion의 길이는 participant의 길이보다 1 작습니다.
- 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
- 참가자 중에는 동명이인이 있을 수 있습니다.
문제 풀이 방법
- 참가자들의 이름을 key로 갖고, 완주 여부를 확인할 수 있는 정수를 value로 갖는 HashMap을 설정
- 모든 참가자의 value에 +1, 완주자들에게는 -1을 해주는 코드를 for문을 사용해 참여자 인원수 만큼 반복
- map에서 value값을 비교 후 완주하지 못한 인원의 이름을 반환
코드
function solution(participant, completion) {
const map = new Map();
for(let i = 0; i<participant.length; i++){
let a = participant[i];
let b = completion[i];
map.set(a, (map.get(a) || 0) + 1);
map.set(b, (map.get(b) || 0) - 1);
}
for(let [k,v] of map){
if(v>0) return k;
}
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
정렬 / 2 / 가장 큰 수 (JS) (0) | 2022.06.08 |
---|---|
정렬 / 1 / K번째 수 (JS) (0) | 2022.06.08 |
해시 / 3 / 베스트앨범 (JS) (0) | 2022.06.07 |
해시 / 2 / 위장 (JS) (0) | 2022.06.07 |
해시 / 2 / 전화번호 목록 (Java) (0) | 2022.06.07 |