알고리즘) 해시-완주하지 못한 선수

joDMSoluth·2020년 2월 20일
0

알고리즘

목록 보기
1/2

function solution(participant, completion) {
    
 	//completion을 participant에 대입해서 맞으면 해당 paticipant삭제
    for(let i=0; i<completion.length; i++) {
        for(let j=0; j<participant.length; j++) {
            if(participant[j] === completion[i]) {
                participant.splice(j,1,'');
              // j 인덱스에서부터 1개 삭제 후 그 자리 빈칸 넣기
              // 빈칸을 넣어주지 않으면 participant의 전체 인덱스가 줄어버린다.
                break;
            }
        }
    }
    const answer =participant.join('')
    // join을 통해 위에서 넣어준 빈칸들 제거
    
    return answer;
}

내 풀이는 이렇게 했는데 이중 for문을 써서 그런지 효율성 부분에서 틀려버렸다. 다른 사람 풀이를 참고해보니

function solution(participant, completion) {
    /*
    for(let i in participant) {
        if(completion.includes(participant[i]) == false) return participant[i];
        completion.splice(completion.indexOf(participant[i]), 1);
    }
    */

    participant.sort();
    completion.sort();

    for(let i in participant) {
        if(participant[i] !== completion[i]) return participant[i];
    }
}

정렬 후에 같은 인덱스 상에서 서로 다르면 그 사람만 리턴하는 식으로 했다.

profile
풀스택이 되고 싶은 주니어 웹 개발자입니다.

0개의 댓글