[프로그래머스] 해시 - 완주하지 못한 선수 (자바스크립트)

[프로그래머스] 해시 - 완주하지 못한 선수 (자바스크립트)

https://programmers.co.kr/learn/courses/30/lessons/42576

첫번째 풀이

function solution(participant, completion) { completion.forEach((racer) => { var idx = participant.indexOf(racer); participant.splice(idx, 1); }); var answer = participant[0]; return answer; }

시간 초과가 떠서 틀렸다.

두번째 풀이

function reducer(arr) { var result = arr.reduce((counter, racer) => { counter[racer] = (counter[racer] || 0) + 1; return counter; }, {}); return result; } function solution(participant, completion) { var obj_participant = reducer(participant); var obj_completion = reducer(completion); var answer = ""; Object.entries(obj_participant).map( ([participant_name, participant_count]) => { if (!obj_completion[participant_name]) { answer = participant_name; } else if (obj_completion[participant_name] !== participant_count) { answer = participant_name; } } ); return answer; }

- 객체 형태로 변환해서 key 와 value 값을 비교해줘야 할 것 같아서

reducer 함수를 따로 만든 뒤에, 그 reducer 함수로 만든 참가자 객체와 완주자 객체를 각각 비교했다.

- 다른 풀이를 볼 때마다 가장 먼저 드는 생각은 진짜 난 똥멍청인가 하는 것이다ㅋㅋ

복잡하게 생각하면 한도 끝도 없이 복잡해지는 것 같다.

왜 저렇게 단순 명료한 풀이법을 생각 못하나 싶다.

바보같이 사서 고생하는 풀이를 볼 때마다 자괴감 듦..ㅋㅋㅋ

from http://ghebal.tistory.com/20 by ccl(A) rewrite - 2021-11-03 01:02:00