티스토리 뷰

알고리즘/level 1

완주하지 못한 선수

민트초코수장 2020. 12. 23. 23:26

1. 문제

2. 문제 해석

마라톤에 참여한 선수들 중 완주하지 못한 선수의 이름을 반환해주는 문제입니다.

여기서 참가자 중에는 동명이인이 있을 수 있습니다.

 


 

3.  코드 해석

문제가 해시에 관련된 문제이기 때문에 object를 이용하여 풀이하였습니다.

function solution(participant, completion) {
    const obj = {};
    for (let player of participant) {
        if (obj[player]) {
            obj[player] += 1;
        }else {
            obj[player] = 1;
        }
    }
    for (let finisher of completion) {
        if (obj[finisher]) {
            obj[finisher] -= 1;
        }
    }
    for (let player of participant) {
        if (obj[player] >= 1) {
            return player;
        }
    }
}

빈 오브젝트인 obj를 만든 후 참가자가 obj에 키 값으로 들어가 있다면 value값을 +1해주었고

없다면 키는 참가자, value는 1로 지정하여 오브젝트를 생성하였습니다.

 

그리고 완주자가 obj에 있는지 확인 후 있다면 value값을 -1해줍니다.

 

마지막으로 obj에 남은 참가자는 value의 값이 1이 되기 때문에 그 참가자를 반환해줍니다.

 

 


4. 다른 사람들의 풀이

 

const solution = (p, c) => {
    p.sort()
    c.sort()
    while (p.length) {
        let pp = p.pop()
        if (pp !== c.pop()) return pp
    }
}

object를 사용하지 않아도 정렬하여 비교해나가면서 pop으로 삭제하여 마지막에 남는 값을 빼주는 것을 볼 수 있습니다.

 

역시 코딩에는 정답이 없다라는 말이 맞는 것 같습니다...🙄

 

 

programmers.co.kr/learn/courses/30/lessons/42576

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

 

반응형

'알고리즘 > level 1' 카테고리의 다른 글

다트게임 - javascript  (0) 2021.01.06
비밀지도 - javascript  (0) 2021.01.06
최대공약수와 최소공배수  (0) 2020.12.23
문자열 내 p와 y의 개수  (0) 2020.12.11
문자열 내림차순으로 배치하기  (0) 2020.12.10
Comments