출처 - https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
풀이
// function solution(participant, completion) {
// //둘다 정렬을 해줌
// participant.sort();
// completion.sort();
// //반복문을 이용해서 만약 배열의 i번째가 같지않다면 그사람은 완주하지 못한 인원이므로 바로 i번째 참가자 리턴
// for(var i=0;i<participant.length;i++){
// if(participant[i] !== completion[i]){
// return participant[i];
// }
// }
// }
// 해시 이용 풀이
function solution(participant, completion) {
const myMap = new Map();
// 참가자
for (const person of participant) {
if (!myMap.has(person)) {
//person(참가자 배열에있는 한 요소)를 추가하고 1의 밸류값을 지니게 함
myMap.set(person, 1);
} else {
//만약 이미 참가자가 있다면 person이 가지고있는 밸류에 1을 더한다
myMap.set(person, myMap.get(person) + 1);
}
}
//완주자
for (const person of completion) {
//만약 map에 넣었던 참가자가 완주자 명단에 있다면
if (myMap.has(person)) {
//밸류를 1을 빼준다.
myMap.set(person, myMap.get(person) - 1);
}
}
let answer = '';
//person은 사람을 , count는 밸류를 뜻함 myMap을 순회하면서
for (const [person, count] of myMap.entries()) {
//밸류가 1이거나 넘는다면 그것은 완주를 하지못했다는 의미
if (count >= 1) {
answer = person;
break; // 완주하지 못한 참가자를 찾았으므로 반복문 종료
}
}
return answer;
}
배열로 반복문을 이용해 푼것과 해쉬를 이용하여 키와 밸류값을 이용해 풀었다.
'알고리즘' 카테고리의 다른 글
[알고리즘] 프로그래머스 Lv.1 - 과일 장수(JS) (0) | 2024.04.16 |
---|---|
[알고리즘] 프로그래머스 Lv.2 - 가장 큰 수(JS) (0) | 2024.04.04 |
[알고리즘]프로그래머스 Lv.1 - 기사단원의 무기 (0) | 2024.04.01 |
[알고리즘] 프로그래머스 Lv.1 - 두개 뽑아서 더하기 (0) | 2024.03.30 |
[알고리즘] 프로그래머스 Lv.1 - 추억 점수 (0) | 2024.03.26 |