알고리즘 문제풀이📝 Hash(1)
프로그래머스 완주하지 못한 선수
🌙 방법 1(시간 초과)
completion배열 돌면서 participant배열에 해당 값의 인덱스 찾아 제거
function solution(participant, completion) {
for(let i=0; i<completion.length; ++i){
participant.splice(participant.indexOf(completion[i]),1);
}
return participant[0]
}
🌙 방법 2
동일하게 정렬 사용
정렬했는데 틀린 경우에 바로 return
function solution(participant, completion) {
participant.sort();
completion.sort();
for(let i=0;i<participant.length;i++){
if(participant[i] !== completion[i]){
return participant[i];
}
}
}
테스트 1 〉 통과 (44.07ms, 41.3MB)
테스트 2 〉 통과 (79.85ms, 47.8MB)
테스트 3 〉 통과 (96.37ms, 52.4MB)
테스트 4 〉 통과 (104.29ms, 55.1MB)
테스트 5 〉 통과 (110.10ms, 53.6MB)
🌙 방법 3
해당 정보를 hash로 구현한다
해당하는 key가 나오면 value를 하나씩 낮춰준다
value값으로 해당 key값을 찾으려면 for문을 전부 돌려야한다
function solution(participant, completion) {
const hash = {};
for(let p of participant) {
if(!hash[p]){hash[p] = 1;
}else{
hash[p] +=1;}
}
completion.forEach(p => hash[p]-=1);
for(let key in hash){
if(hash[key]) {
return key;
}
}
}
테스트 1 〉 통과 (35.21ms, 48.4MB)
테스트 2 〉 통과 (51.07ms, 53.3MB)
테스트 3 〉 통과 (60.76ms, 57MB)
테스트 4 〉 통과 (66.19ms, 65.7MB)
테스트 5 〉 통과 (87.14ms, 65.4MB)
이 문제는 Hash를 사용했을 때 더 효율적인 풀이가 된다
Author And Source
이 문제에 관하여(알고리즘 문제풀이📝 Hash(1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@oreo/알고리즘-문제풀이-Hash적용저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)