간단 문제 설명
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요
https://school.programmers.co.kr/learn/courses/30/lessons/42576
문제 해결 IDEA
반복문을 돌려서 map객체에 참여자를 key값으로 저장시킨 뒤에, 완주자와 참여자를 비교해서 map에서 완주자를 제외시킨다 남겨진 참여자를 반환한다.
- map객체 생성 = new Map()
- set() → key값으로 데이터 저장
- 비교하기 has()로 있는지 확인
- 있으면 delete()로 map객체에서 삭제 없으면 get()으로 map객체에 있는 데이터를 가져와 배열로 변환 뒤, strign으로 반환
예외발생!!! 문제는 ⇒ 동일한 이름의 선수 처리 map객체에 저장되지 않음 → 숫자로 중복 인물을 처리해줌
let num = 4;
function solution(participant, completion) {
let answer = "";
let goal = new Map();
for (let i = 0; i < participant.length; i++) {
goal.set(participant[i], true);
}
for (let i = 0; i < participant.length; i++) {
if (goal.has(completion[i])) {
goal.delete(completion[i]);
}
}
return (answer = Array.from(goal.keys()).join());
}
console.log(solution(["leo", "kiki", "eden"], ["eden", "kiki"])); // leo
console.log(
solution(
["marina", "josipa", "nikola", "vinko", "filipa"],
["josipa", "filipa", "marina", "nikola"]
)
); //vinko
console.log(
solution(["mislav", "stanko", "mislav", "ana"], ["stanko", "ana", "mislav"])
); //mislav
v2 풀이
- new Map() map객체 생성
- map객체에 데이터를 채워넣는다. key에는 참여자의 데이터, value에는 숫자로 넣는다. 중복되는 key가 있으면 value에 +1을 해야 함으로 get()으로 value를 가져온다. ( 데이터가 없으면 0값을 넣는다 ) get으로 가져온 값에 + 1을 한다
- map객체가 완성이 되면 완주자 데이터와 비교한다. 완주자가 있으면 delete메서드를 사용하지 않고 value에 -1을 하여 새로운 숫자를 넣어 set()으로 덮어쓰기한다.
- for-of문에서 배열 구조분해 할당을 사용해서 value가 0이 아닌 것을 반환한다.
function solution(participant, completion) {
let answer = "";
let goal = new Map();
for (let i = 0; i < participant.length; i++) {
goal.set(participant[i], (goal.get(participant[i]) || 0) + 1);
}
for (let i = 0; i < participant.length; i++) {
if (goal.has(completion[i])) {
goal.set(completion[i], goal.get(completion[i]) - 1);
}
}
for (let [key, value] of goal) {
if (value > 0) return (answer = key);
}
return answer;
}
console.log(solution(["leo", "kiki", "eden"], ["eden", "kiki"])); // leo
console.log(solution(["marina", "josipa", "nikola", "vinko", "filipa"], ["josipa", "filipa", "marina", "nikola"])); //vinko
console.log(solution(["mislav", "stanko", "mislav", "ana"], ["stanko", "ana", "mislav"])); //mislav
map 객체를 사용해보게 되었다.
'개발공부_Blog > Algorithm' 카테고리의 다른 글
프로그래머스-포켓몬 (0) | 2024.11.29 |
---|---|
JadenCase 문자열 만들기 (1) | 2024.11.28 |
프로그래머스 - 다리를 지나는 트럭 (0) | 2024.11.20 |
프로그래머스-주식가격 (1) | 2024.11.18 |
프로그래머스 - 프로세스 (0) | 2024.11.17 |
댓글