반응형
https://programmers.co.kr/learn/courses/30/lessons/42862
function solution(n, lost, reserve) {
const students = {};
let answer = 0;
for(let i = 1; i <= n; i++){
students[i] = 1;
}
lost.forEach(number => students[number] -= 1);
reserve.forEach(number => students[number] += 1);
for(let i = 1; i <= n; i++){
if(students[i] === 2 && students[i-1] === 0){
students[i-1]++;
students[i]--;
} else if(students[i] === 2 && students[i+1] === 0){
students[i+1]++;
students[i]--;
}
}
for(let key in students){
if(students[key] >= 1){
answer++;
}
}
return answer;
}
전체 학생의 수 만큼 for문을 돌면서 학생 object에 1씩을 넣어주었다.
lost(잃어버린 학생)의 array를 조회하며 학생 object의 key에 -1을 해 주었다.
반대로 reserve(여벌이 있는 학생)의 array를 조회하며 학생 object의 key에 +1을 해 주었다.
그다음 for 문을 조회하며
각각의 학생이 여분이 있는 경우면서(2) 앞의 학생과 뒤의 학생이 체육복을 잃어버린 상태라면(0) 체육복을 전달해 주는 방식으로 구현하였고,
마지막으로는 key의 체육복의 수(value) 가 1보다 큰 경우에는 체육복이 있다는 것으로 판별하여 answer을 +1 해주었다.
반응형
'javascript > 프로그래머스' 카테고리의 다른 글
[코딩테스트 연습] level 1. 바탕화면 정리 (0) | 2023.03.24 |
---|---|
[코딩테스트 연습]level 1. 로또의 최고 순위와 최저 순위 (0) | 2022.07.08 |
[코딩테스트 연습]level 1. 완주하지 못한 선수 - 코드분석 (0) | 2022.07.06 |
[코딩테스트 연습]level 1. 완주하지 못한 선수 (0) | 2022.07.04 |
[코딩테스트 연습]level 1. 실패율 (0) | 2022.06.28 |
댓글