Algorithm

[프로그래머스] Level 1 | 완주하지 못한 선수 | Java Script

반응형

문제 보기 : https://programmers.co.kr/learn/courses/30/lessons/42576

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

 

설명

  • 해쉬 문제로 오브젝트를 사용하면 되는 문제이다. sort로 푸는 방법도 있지만, 오브젝트를 이용하는 것이 좀 더 빠르다.
  • 참가자의 요소를 순회하면서 오브젝트의 키값으로 넣고 처음 나온 경우 value는 1로, 그렇지 않은 경우 기존 값에 +1한다.
  • 완주자의 요소를 순회하며 오브젝트의 벨류를 -1 한다.
  • 최종적으로 오브젝트를 순회하며 value가 1이상인 키를 리턴한다.

 

코드

  • 조건 ? true인 경우 : false인 경우
function solution(participant, completion) {
    const name = {}
    
    for (let part of participant) {
        name[part] = name[part] ? name[part] + 1 : 1 // 3항 연산자
    }
    
    for (let comp of completion) {
        name[comp] -= 1
    }
    
    for (let myName in name) {
        if (name[myName]) {
            return myName;
        }
    }
}
반응형