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 | 29 | 30 |
Tags
- 디스크 컨트롤러
- 더 맵게
- heap
- Stack
- 소수찾기
- Brute Force
- Javascript
- browser workflow
- react-native-navigation
- Queue
- sorting
- 이중우선순위큐
- 완주하지 못한 선수
- react-native
- Programmers
- Virtual DOM
- 타겟 넘버
- hash
- react-native bind
- react
- 가장 큰 수
- 기능개발
- 깊이우선탐색
- 넓이우선탐색
- Algorithm
- k번째수
- 주식
- Data Structure
- 다리를 지나는 트럭
- 전화번호 목록
Archives
- Today
- Total
개발 블로그
[프로그래머스/Javascript/Hash] 완주하지 못한 선수 본문
1. 문제 설명(출처: programmers.co.kr/learn/courses/30/lessons/42576)

2. 문제 풀이
1) 문제에서 참여자 명단에는 있지만, 완주자 명단에는 없는 사람을 찾으라고 했다. 단, 동명이인이 있을 수 있다고 했다. 이는 hash(map)를 사용해 (이름, 동명이인의 수)를 만들고, 완주자 명단에 있는 이름의 동명이인의 수를 감소시키면 마지막 남은 사람을 찾을 수 있다.
2) participants를 각각 돌아가면서 아래 명령을 수행한다.
2-1) map에 해당 참가자의 이름이 있는지 확인한다.
2-1-T1) 해당 참가자의 동명이인 수 + 1을 한다.
2-1-F1) 해당 참가자를 (이름, 1) 형태로 map에 저장한다.
3) completions를 각각 돌아가면서 아래 명령을 수행한다.
3-1) map에 해당 완주자의 이름이 있는지 확인한다.
3-1-T1) 해당 참가자의 동명이인 수 - 1을 한다.
4) map에 있는 참가자들의 이름을 돌아가면서 value가 1인 사람의 이름을 찾아서 반환한다.
3. 결과 코드
function solution(participants, completions) {
var hmap = new Map()
for(let participant of participants){
if(hmap.has(participant)){
hmap.set(participant, hmap.get(participant)+1)
}else{
hmap.set(participant, 1)
}
}
for(let completion of completions){
if(hmap.has(completion)){
hmap.set(completion, hmap.get(completion)-1)
}
}
return [...hmap.entries()]
.filter(({ 1 : v }) => v === 1)
.map(([k]) => k)[0];
}
'IT > Programmers' 카테고리의 다른 글
[프로그래머스/Javascript/Hash] 위장 (0) | 2021.04.11 |
---|---|
[프로그래머스/Python3/Hash] 전화번호 목록 (0) | 2021.04.10 |
[프로그래머스/Javascript/Sorting] H-Index (0) | 2021.04.08 |
[프로그래머스/Javascript/Sorting] 가장 큰 수 (0) | 2021.04.08 |
[프로그래머스/Javascript/Sorting] K번째수 (0) | 2021.04.07 |