Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- customModal component 만들기
- lifecycle
- JavaScript
- 겹치는 선분의 길이
- Redux
- 달리기경주
- 배열
- todolist
- google firebase
- debounce
- Recoil
- 생명주기
- 투두리스트
- 자바스크립트
- Firebase
- useMutation
- SSR
- programmers
- JS
- 리액트
- next-pwa
- 넥스트
- react-query
- React
- Next
- csr
- 리덕스
- 파이어베이스
- NextJS
- 리엑트
Archives
- Today
- Total
끄적끄적
[Programmers] 완주하지 못한 선수 (JS) 본문
처음문제를 보면 굉장히 간단해 보인다.
participant를 한번 돌면서 completion을 보고 포함이 안되어있는 사람을 찾으면 되는 것이다.
그렇게 만만하게 문제를 보고 풀었더니 역시나 시간초과 였다.
#잘못된 풀이
//잘못된 풀이 방식 (시간 초과)
function solution(participant, completion) {
return participant.filter(d => {
if(completion.includes(d)){
let i = completion.indexOf(d);
completion.splice(i,1);
return false;
} else return true;
})[0]
}
그러므로 최대한 배열을 사용안하는 방법을 생각해 보았다.
1. 먼저 p라는 객체에 participant를 모두 key값으로 넣고 값을 0으로 초기화 한다.
2. participant를 다시 읽으며 p의 해당 key 값을 증가시킨다. (동명이인이 있으므로 1이상이 될수도있다.)
3. 마지막으로 completion을 읽으며 또다시 p에서 해당 key값을 감소 시킨다.
4. 문제에서 탈락자는 1명이라고 특정했으므로 0인 사람의 이름을 찾는다.
function solution(participant, completion) {
let p = {};
participant.forEach(d => p[d] = 0);
participant.forEach(d => p[d]++);
completion.forEach(d => p[d]--);
return Object.keys(p).filter(d => p[d] >= 1)[0]
}
또 한번 배열의 무서움에 대해 느낀다..
'Programmers' 카테고리의 다른 글
[Programmers] 신고 결과 받기 (JS) (0) | 2024.01.22 |
---|---|
[Programmers] 햄버거 만들기 (JS) (0) | 2024.01.19 |
[Programmers] 둘만의 암호 (JS) (0) | 2024.01.18 |
[Programmers] 대충 만든 자판 (JS) (0) | 2024.01.18 |
[Programmers] 가장 많이 받은 선 풀이(JS) (0) | 2024.01.10 |
Comments