문제 1 - 완주하지 못한 선수
validarity : 100%
language : javascript
link : 코딩 테스트 고득점 kit > 해시 > 완주하지 못한 선수
function solution(participant, completion) {
var answer = '';
var checkMap = new Map();
participant.forEach(data=>{
if(checkMap.get(data)!=null){
checkMap.set(data, checkMap.get(data)+1);
}else{
checkMap.set(data, 1);
}
});
completion.forEach(data=>{
checkMap.set(data, checkMap.get(data)-1);
});
participant.forEach(data=>{
if(checkMap.get(data) >= 1){
answer = data;
}
});
console.log(checkMap);
return answer;
}
문제 2 - K번째 수
validarity : 100%100%
language : javascript
link : 코딩 테스트 고득점 kit > 배열 > K번째 수
function solution(array, commands) {
var answer = [];
var tempArr = [];
var begin = 0;
var end = 0;
var index = 0;
for(let i = 0; i<commands.length; i++){
begin = commands[i][0] - 1;
end = commands[i][1];
index = commands[i][2] - 1;
tempArr = array.slice(begin,end);
tempArr.sort(function(a,b){ //sort는 문자열 정렬을 가정 숫자열은 제대로 정렬 안 될 수 있음
return a-b; //따라서 이렇게 작성해주어야 한다.
});
//sort.((a,b) => a-b)
answer[i] = tempArr[index];
}
return answer;
}
문제 3 - 체육복
validarity : 100%
language : javascript
link : 코딩 테스트 고득점 kit > 탐욕법 > 체육복
function solution(n, lost, reserve) {
var answer = 0;
var student = new Map();
var lostData = 0;
var front_s = 0;
var back_s = 0;
lost.sort(function(a,b){
return a-b;
});
reserve.sort(function(a,b){
return a-b;
});
//n 학생 숫자
//lost 잃어버린 학생
//reverse 여분이 있는 학생
for(let i =0; i < n; i++){
student.set(i+1, 1);
}
reserve.forEach(data=>{
student.set(data,student.get(data)+1);
});
lost.forEach(data=>{
student.set(data, student.get(data)-1);
});
for(let i =0; i < lost.length; i++){
lostData = lost[i];
front_s = lostData-1;
back_s = lostData+1;
//1. 없는 사람만 빌리도록 체크
if(student.get(lostData) == 0){
//2. 2개 이상인 앞사람에게서만 빌리도록 체크
if(student.get(front_s) >= 2){
student.set(lostData, student.get(lostData)+1);
student.set(front_s, student.get(front_s)-1);
//3. 2개 이상인 뒷사람에게서만 빌리도록 체크
}else if(student.get(back_s) >= 2){
student.set(lostData, student.get(lostData)+1);
student.set(back_s, student.get(back_s)-1);
}
}
}
//1개 이상 가지고 있는 사람만 체크
student.forEach(data=>{
if(data >= 1) answer++;
});
console.log(student);
return answer;
}
hashMap을 공부한 뒤에 작성한 코드 이전보다 훨씬 깔끔해지고 문제 풀기도 편해졌다.