[프로그래머스] 코딩테스트 연습 - 7

krkorklo·2022년 1월 25일
0

프로그래머스

목록 보기
7/78

level 1 - 완주하지 못한 선수

마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

입출력 예시
participant : ["leo", "kiki", "eden"]
completion : ["eden", "kiki"]
-> "leo"

function solution(participant, completion) {
    var answer = participant;
    completion.map((c) => {
        var idx = answer.indexOf(c);
        answer.splice(idx, 1);
    })
    return answer[0];
}

처음에 이렇게 풀었다.
이것도 splice 함수 인자가 delete할 부분의 첫 번째 위치, 마지막 위치인줄 알고 (idx, idx+1)로 했었는데 두 번째 인자는 delete 개수더라. 검색해보고 알았다ㅎ

그래서 맞겠거니 했는데 효율성 검사에서 실패함😪

나같은 사람이 있나 질문하기 들어갔다가 스포(?)를 봐버림

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

sort를 사용해서 풀었다.

다른 풀이 보니까 엄청엄청 간단하게 푼 사람들도 있더라

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

이해못해서 한참을 보고 댓글도 보고 겨우 이해했다.
근데 내 머리로는 도저히 나올 수 없는 창의적인 답임

0개의 댓글