Programmers 완주하지 못한 선수 (javascript)

JongIk Park·2021년 6월 11일
0

프로그래머스

목록 보기
7/17
post-thumbnail

⛹️‍♂️실행 코드

  • 먼저 순차적인 비교를 위해 sort()를 이용하여 particpant와 completion 배열을 오름차순 정렬했다.
  • 그 다음 참여자의 수 만큼 반복문을 통해 participant배열의 값이 completion의 값에 있는지를 비교했다.
function solution(participant, completion) {
    var answer = '';
    const all = participant.length; // 전체 참가자의 수
    participant.sort(); // 비교를 위해 정렬
    completion.sort();  // 비교를 위해 정렬
    
    for(let i=0;i<all; i++){
        if(participant[i] != completion[i]){
            answer = participant[i];
             return answer;
        }
    }
    //return answer; 을 여기에 넣으면 중복되는 값을 못 받아오는 듯 하다
}

⛹️‍♂️다른 사람의 풀이

//http://yoonbumtae.com/?p=3578
function solution(participant, completion) {
    
    const obj = {}
    
    for (let p of participant) {
        obj[p] = obj[p] ? obj[p] + 1 : 1
    }
    for (let c of completion) {
        obj[c] -= 1
    }
    for (let key in obj) {
        if (obj[key] == 1) {
            return key
        }
    }
}
  1. 위의 풀이에서는 obj라는 객체를 하나 생성하여 participant 배열을 순회하며 참가자들을 객체 key로 등록시킨 뒤 참가자 명단에 존재할 때마다 1을 더했다.
  2. 그리고 completion배열을 순회하며 완주자 명단에 있는 객체 변수에서 다시 -1을 해주었다.
  3. 위 두 과정을 거치면 완주자는 0, 완주하지 못한 선수는 1이상의 값을 가지게 된다.
profile
신입 프론트엔드 개발자

0개의 댓글