[javascript] Programmers Hash level1 완주하지 못한 선수

j·2021년 8월 14일
0

알고리즘

목록 보기
1/4

문제


[Programmers] Hash level1 완주하지 못한 선수

체크 포인트

  • 중복 검사
    array.includes() 함수를 사용하면 쉽게 풀이할 수 있지만,
    동명이인이 있을 수 있다는 제한 사항이 어렵게 다가왔다.
    그래서 중복검사에 신경을 쓰다보니 중요한 점을 놓친 것 같다는 생각이 들었다.

풀이 #1 - 반복문 이용

👉정렬👈한 후 반복문으로 비교하는 간단한 방법이 있었다.

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

풀이 #1

풀이 #2 - Hash 이용

  • Hash: Key-Value 쌍으로 데이터를 저장하는 자료구조
    Map, Object 등
function solution(participant, completion) {
    const participantObj = {}; // KEY: 참여자 이름, VALUE: 동명이인 수
    for (let name of participant) {
        participantObj[name] = participantObj[name] ? participantObj[name] + 1 : 1;
    }

    // 완주자 목록에 있는 경우 VALUE값 감소
    for (let name of completion) {
        participantObj[name] -= 1;
    }

    for (let name in participantObj) {
    	// completion의 길이는 participant의 길이보다 1 작으므로
        if (participantObj[name] === 1) {
            return name;
        }
    }
}

profile
같은 실수를 하지 않기 위해 기록을 남깁니다

0개의 댓글

관련 채용 정보