문제 : https://programmers.co.kr/learn/courses/30/lessons/42576
🔶 나의 풀이
1. 두 배열을 sort로 정렬함
2. 두 배열의 각 요소를 인덱스로 접근해서 같은지 파악
3. 다르면 그 값을 리턴한다.
// 방법1 - sort,for문 사용
function solution(participant, completion) {
participant.sort();
completion.sort();
for (let i = 0; i < participant.length; i += 1) {
if (participant[i] !== completion[i]) {
return participant[i];
}
}
}
// 방법2- sort,find사용
function solution(participant, completion) {
participant.sort(); // ["ana", "mislav", "mislav", "stanko"]
completion.sort(); // ["ana", "mislav", "stanko"]
return participant.find((el, idx) => el !== completion[idx]);
}
// 실행
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"
🔶 다른 사람 풀이
function solution(participant, completion) {
const map = new Map();
for (let i = 0; i < participant.length; i += 1) {
let a = participant[i],
b = completion[i];
map.set(a, (map.get(a) || 0) + 1);
map.set(b, (map.get(b) || 0) - 1);
}
for (let [k, v] of map) {
if (v > 0) return k;
}
return 'nothing';
}
function solution(participant, completion) {
const dic = completion.reduce((acc, cur) => {
acc[cur] = acc[cur] ? acc[cur] + 1 : 1;
return acc;
}, {});
// console.log(dic); // {eden: 1, kiki: 1} , {josipa: 1, filipa: 1, marina: 1, nikola: 1}
return participant.find((el) => {
if (dic[el]) {
dic[el] -= 1;
} else {
return el;
}
});
}
🔶피드백
열심히 하고 계시네요^^ 꼭 취업 성공해서 만나는 날이 있길 바라요!