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 | 31 |
Tags
- 배열
- GraphQL
- 릿코드
- 자료구조
- 프로그래머스
- vue3
- 컨테이너
- 웹팩
- 브라우저
- 포인터
- 큐
- 알고리즘
- Machine Learning
- pytorch
- cors
- 프로세스
- 코딩테스트
- 연결리스트
- RxJS
- C
- APOLLO
- 스택
- RT scheduling
- 타입스크립트
- 이진탐색
- 해시테이블
- alexnet
- 프론트엔드
- 자바스크립트
- 연결 리스트
Archives
- Today
- Total
프린세스 다이어리
[프로그래머스] 자바스크립트 완주하지 못한 선수 문제 - 해시 본문
728x90
1. 접근 방법
(0) 동명이인이 있을 수 있다는 점에서 해시 테이블로 푸는 방법을 생각했다.
(1) participant를 map에 저장하면서, key는 참가자 이름, value는 동명이인이 이미 있으면 +1, 없으면 그냥 1로 넣어준다.
for (let person of participant){
if(!map.get(person)){
map.set(person, 1);
}else{
map.set(person, map.get(person)+1);
}
}
(2) completion을 돌면서 한 명씩 map에 이름에 해당하는 값이 1이면 엘리먼트를 삭제해 주고, 2 이상이면 1을 뺀다.
for(let person of completion){
if(map.get(person) >= 2){
map.set(person, map.get(person) - 1);
} else {
map.delete(person);
}
}
(3) 맨 마지막 남은 원소를 리턴해준다.
for(let person of participant){
if(map.get(person) && map.get(person) >= 1 ){
answer = person;
}
}
2. 해답 코드
function solution(participant, completion) {
let answer = ''
const map = new Map();
for (let person of participant){
if(!map.get(person)){
map.set(person, 1);
}else{
map.set(person, map.get(person)+1);
}
}
for(let person of completion){
if(map.get(person) >= 2){
map.set(person, map.get(person) - 1);
} else {
map.delete(person);
}
}
for(let person of participant){
if(map.get(person) && map.get(person) >= 1 ){
answer = person;
}
}
return answer
}
풀이 후기: 기껏 정석적으로 자바스크립트 해시 테이블 만드는 방법을 공부했는데 결국 new Map() 생성자 함수로 해결하면 쉽게 끝나서 약간 허무쓰 했다.
728x90
'자료구조, 알고리즘' 카테고리의 다른 글
[프로그래머스] 자바스크립트 베스트 앨범 문제 해설 (0) | 2021.11.17 |
---|---|
[프로그래머스] 자바스크립트 위장 문제 - 해시 (0) | 2021.11.16 |
자바스크립트 해시 테이블 충돌 해결하는 방법 2가지 (0) | 2021.11.14 |
자바스크립트로 해시테이블 구현하는 방법 (0) | 2021.11.13 |
[프로그래머스] 여행경로 문제 자바스크립트 풀이 (0) | 2021.11.09 |
Comments