HIT해

[JS 프로그래머스] 완주하지못한 선수.해시 본문

Vue/JavaScript 알고리즘

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

힛해 2024. 1. 21. 20:03
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제들을 풀면서 기본적인 함수 sort를 쓰면 무조건 시간초과가 나기 때문애 어떤 기준에서 만들지 고민을 했다.

그런데 다른 사람들의 풀이를 보니 이게 무슨.

 

sort 함수로 배열을 정리한다음에 다르게 나오는 참가자를 출력하는게 끝이었다.

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

 

하지만 이러면 해시문제라는 타이틀에 걸맞지 않다.

 

function solution(participant, completion) {
    const myMap = new Map();

    for(let i = 0; i < participant.length; i++){
        if(!myMap.get(participant[i])){
            myMap.set(participant[i], 1);
        }else{
            myMap.set(participant[i], myMap.get(participant[i])+1)
        }
    }
    
    for(let i = 0; i < completion.length; i++){
        myMap.set(completion[i], myMap.get(completion[i])-1)
    }
    let answer = "";
    for(let i = 0; i < participant.length; i++){
        if(myMap.get(participant[i]) >= 1){
            console.log(participant[i])
            answer = participant[i];
        }
    }
    
    return answer
    
}

 

해시맵을 사용하면 key value 형태로 저장된다.

const 변수명 = new Map(); 으로 선언해서 사용한다.