[프로그래머스] 완주하지 못한 선수

2023. 3. 2. 13:32Algorithm

participant 배열에는 포함되지만, completion배열에는 포함되지 않은 선수 이름을 return 하는 문제

* participant가 completion보다 +1 길다

1. 두 배열을 sort

2. index 0부터 차례로 비교하여 값이 달라지는 index를 찾는다

3. participant[index]의 사람이 완주하지 못한 선수!

function solution(participant, completion) {
    participant.sort()
    completion.sort()
    for(let i=0; i<participant.length; i++){
        if(participant[i]!==completion[i]) { return participant[i]}
    }
}

 

 

프로그래머스 상에서 해시 문제로 분류해두었길래

해시를 사용하여 풀어보고자 한다!

1. 해시 테이블 만들기(Map객체 사용함)

2. index 0부터 차례로 participant와 compleiton의 값에 접근

2-1. participant의 값: key, map에 participant의 값이 있으면 +1해서 갱신, 없으면 1로 set

2-2. completion도 마찬가지로 completion의 값: key, map에 completion의 값이 있으면 -1해서 갱신, 없으면 -1로 set

=> participant와 completion에 모두 있는 사람은 value가 0, participant에 만 있으면 value가 1이다.

3. map에서 value가 1인 key값을 return

function solution(participant, completion){
    let map = new Map()
    for(let i =0; i<participant.length; i++){
        let a = participant[i], 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 >=1){return k}
    }
}