자바스크립트 코딩테스트
프로그래머스 Level 1 - 완주하지 못한 선수 (Javascript)
준벨롭
2023. 11. 25. 12:28
문제
답안
function solution(participant, completion) {
var answer = '';
//participant, completion 배열을 정렬한다.
participant.sort();
completion.sort();
// participant와 completion의 i번째 값이 다를 때 반복문에서 탈출하고, participant의 i값을 출력
for(let i = 0; i < participant.length; i++){
if(participant[i] !== completion[i]){
answer = i;
break;
}
}
return participant[answer];
}
이 문제는 사실 해시로 구분돼 있지만, 내 머릿속에 생각난 풀이는 이거였다,,,,
function solution(participant, completion) {
// 객체 생성
const map = new Map();
for(let i = 0; i < participant.length; i++) {
let a = participant[i],
b = completion[i];
// 참가자와 완주자를 각각 key를 이용해 map에 저장한다.
// 만약 해당 key가 맵에 없다면 0으로 초기화한 후 1을 더한다. (참가자)
// 만약 해당 key가 맵에 이미 있다면 1을 빼준다. (완주자)
map.set(a, (map.get(a) || 0) + 1);
map.set(b, (map.get(b) || 0) - 1);
}
//k, v가 있는 map에서 v값이 0보다 클 경우의 k값을 리턴한다.(참가했지만 완주하지 못한 선수)
for(let [k, v] of map) {
if(v > 0) return k;
}
}
다른사람의 풀이를 보고 이해해봤다.
후기
map생성과 map.get메서드와 논리연산자 || 를 이용해 value값을 다루는게 인상깊었다.
객체 더 열심히 익히기....
728x90