[programmers-js] 완주하지 못한 선수

hooray·2022년 7월 11일
0

문제이해

해시 개념을 이해하고 있는가?

내가 작성한 코드

function solution(participant, completion) {
    completion.map(item => {
        if (participant.includes(item))
            participant.splice(participant.indexOf(item), 1)
    })
    return participant.toString()
}

채점 결과 정확성 테스트는 통과하였으나 효율성 테스트에서는 통과하지 못했다. 속도가 느려거 그런 것 같다. 해시를 공부 해야겠다....

다른 사람의 풀이

답압 1)

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

정렬을 한 다음 반복문 루프안에서 조건문을 사용하여 값이 같지 않을 경우,값을 반환하게 된다. 속도측면에서 이것이 괜찮아서 통과한 것 같다.

답안 2)

var solution=(participant,completion)=>participant.find(name=>!completion[name]--,completion.map(name=>completion[name]=(completion[name]|0)+1))

완주자 배열을 {이름:완주자배열에 등장하는 횟수}로 맵핑하고, 그 맵에 참가자 이름 하나씩 넣어서 찾아볼때마다 횟수 떨어뜨려서 횟수 0나오는 놈 찾아뱉는 함수인 것 같다.
풀이에서 패터쓴님께서 자세하게 풀이해주셨다. 참고해서 유사문제가 나오면 참고해서 나도 써먹어야겠다

profile
Stay hungry. Stay foolish.

0개의 댓글