[프로그래머스] 완주하지 못한 선수
2023. 3. 2. 13:32ㆍAlgorithm
participant 배열에는 포함되지만, completion배열에는 포함되지 않은 선수 이름을 return 하는 문제
* participant가 completion보다 +1 길다
1. 두 배열을 sort
2. index 0부터 차례로 비교하여 값이 달라지는 index를 찾는다
3. participant[index]의 사람이 완주하지 못한 선수!
function solution(participant, completion) {
participant.sort()
completion.sort()
for(let i=0; i<participant.length; i++){
if(participant[i]!==completion[i]) { return participant[i]}
}
}
프로그래머스 상에서 해시 문제로 분류해두었길래
해시를 사용하여 풀어보고자 한다!
1. 해시 테이블 만들기(Map객체 사용함)
2. index 0부터 차례로 participant와 compleiton의 값에 접근
2-1. participant의 값: key, map에 participant의 값이 있으면 +1해서 갱신, 없으면 1로 set
2-2. completion도 마찬가지로 completion의 값: key, map에 completion의 값이 있으면 -1해서 갱신, 없으면 -1로 set
=> participant와 completion에 모두 있는 사람은 value가 0, participant에 만 있으면 value가 1이다.
3. map에서 value가 1인 key값을 return
function solution(participant, completion){
let map = new Map()
for(let i =0; i<participant.length; i++){
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 >=1){return k}
}
}
'Algorithm' 카테고리의 다른 글
[프로그래머스] 베스트앨범 (0) | 2023.03.02 |
---|---|
[프로그래머스] 폰켓몬 (0) | 2023.03.02 |
해시란? Map과 Object의 차이 (0) | 2023.03.01 |
[프로그래머스] 괄호 회전하기 (1) | 2023.02.22 |
[프로그래머스] 직사각형 별찍기 (0) | 2023.02.22 |