알고리즘

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

HSHyeon 2024. 5. 26. 22:26

난이도는 1레벨이고 엄청 간단했지만 신기한 정규식 풀이가 있어서 남겨본다

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

 

주자 배열을 {이름:완주자배열에 등장하는 횟수}로 맵핑하고, 그 맵에 참가자 이름 하나씩 넣어서 찾아볼때마다 횟수 떨어뜨려서 횟수 0나오는 놈 찾아뱉는 함수같네요

 

 

라는 고인물의 코멘트

 

어렵다 어려워...

 

function solution(participant, completion) {
    const 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 > 0) return k;
    }

    return 'nothing';
}

정석 풀이는 이거지 않을까..하는 개인적인 생각

'알고리즘' 카테고리의 다른 글

[JavaScript] 데이터구조  (0) 2024.03.31
[JavaScript] 시간 복잡도 줄이기  (0) 2024.03.27
[JavaScript] 단순 서치 성능 개선하기  (0) 2024.03.27
[JavaScript] map, reduce 함수  (0) 2024.03.09