1. 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 풀이
function solution(participant, completion) {
let answer = "";
const map = new Map();
participant.forEach((name) => map.set(name, (map.get(name) || 0) + 1));
completion.forEach((name) => map.set(name, (map.get(name) || 0) - 1));
for (const [name, value] of map) {
if (value) answer = name;
}
return answer;
}
3. ★
map 객체를 만든 후
1. 참가자 배열을 순회하면서 이름이 나오면 value값에 + 1
2. 완주자 배열을 순회하면서 이름이 나오면 value값에 - 1
=> 완주자 배열에 없는 선수 이름의 value값만 1이 되고, 나머지 선수들의 value값은 0
3. map을 순회하면서 value가 1인 key(선수이름)를 출력
sort()로 해결할 수 있는 문제지만 효율성 측면에서 해시(Map)을 활용해 풀 수 있는 문제이다.
자주 나오는 유형이라고 생각해 기록해두면 좋을 것 같은 생각이 들었다.