728x90
문제
TRY 1 (효율성 실패)
let participant = ['mislav', 'stanko', 'mislav', 'ana']; // 참여 선수
let completion = ['stanko', 'ana', 'mislav']; // 완주한 선수
function solution(participant, completion) {
for (let i = 0; i < completion.length; i++) {
if (participant.includes(completion[i])) {
participant.splice(participant.indexOf(completion[i]), 1);
}
}
return participant.join('');
}
console.log(solution(participant, completion));
완주자 수 만큼 for문을 돌려 해당 완주자를 참가자가 포함하고 있는지 Array.includes() 를 이용하여 확인하고
참가자 배열에서 해당 완주자를 Array.indexOf() 와 Array.splice()를 이용해서 제거해 주었다.
function을 남용해서 인지 효율성에 좋지 않아 재시도 하였다.
TRY 2
let participant = ['mislav', 'stanko', 'mislav', 'ana']; // 참여 선수
let completion = ['stanko', 'ana', 'mislav']; // 완주한 선수
function solution(participant, completion) {
participant.sort();
completion.sort();
for (let i = 0; i < participant.length; i++) {
if (participant[i] !== completion[i]) {
return participant[i];
}
}
}
console.log(solution(participant, completion));
완주자가 참여자 보다 한 명 적은 점을 이용하여
참여자와 완주자 두 배열을 Array.sort()를 이용하여 똑같이 정렬시키고 같은 인덱스의 값이 다를 경우
반환하는 식으로 풀이하니 통과할 수 있었다.
BEST
let participant = ['mislav', 'stanko', 'mislav', 'ana']; // 참여 선수
let completion = ['stanko', 'ana', 'mislav']; // 완주한 선수
function solution(participant, completion) {
participant.sort();
completion.sort();
return participant.find((el, index) => el !== completion[index]);
}
console.log(solution(participant, completion));
다른 사람들의 풀이를 참고하여 for문을 사용하지 않고 Array.find() 를 통해
두 배열의 같은 인덱스의 다른 값을 반환하는 방식으로 코드를 정리하였다.
'ALGORITHM > 프로그래머스 With JS' 카테고리의 다른 글
[프로그래머스] 다리를 지나는 트럭 / Javascript (0) | 2021.04.29 |
---|---|
[프로그래머스] 위장 / Javascript (0) | 2021.04.29 |
[프로그래머스] 체육복 / Javascript (2) | 2021.04.28 |
[프로그래머스] 모의고사 / Javascript (0) | 2021.04.28 |
[프로그래머스] K번째수 / Javascript (0) | 2021.04.27 |
댓글