
생각 과정
학생들이 가진 체육복 수를 적어놓은 배열을 만들자. (1번 학생 -> 0번 인덱스, 2번 학생 -> 1번 인덱스, 3번 학생 -> 2번 인덱스, ...)
도난이 이루어지기 전, 모든 학생은 체육복을 갖고 있다고 가정(배열 크기를 n만큼 지정하고, 전부 1로 가득 채운다)
이후 체육복의 도난과, 여벌 체육복의 유무를 반영하고
for문으로 순회하며 체육복을 가진 학생을 체크한다.
for문이 앞에서 뒤로 순회하는 만큼 체육복이 없는 학생의 경우 (체육복이 0개인 경우), 자신보다 앞선 순서의 체육복을 우선해서 빌린다.
(뒤 순서의 체육복을 빌릴 경우 자신의 뒤의 뒤의 학생이 체육복을 못 빌리는 경우가 발생할 수 있으므로)
function sortArr(arr) {
return arr.slice().sort((a, b) => a - b);
}
function solution(n, lost, reserve) {
let answer = 0;
// 모든 학생은 체육복을 갖고 있다.
let uniformAmount = Array(n).fill(1);
for (let i = 0; i < lost.length; i++) {
uniformAmount[lost[i] - 1] -= 1;
}
for (let i = 0; i < reserve.length; i++) {
uniformAmount[reserve[i] - 1] += 1;
}
for (let i = 0; i < n; i++) {
if (uniformAmount[i] === 0) {
if (uniformAmount[i-1] === 2) {
uniformAmount[i-1]--;
answer++;
continue;
}
if (uniformAmount[i+1] === 2) {
uniformAmount[i+1]--;
answer++;
continue;
}
} else {
answer++;
}
}
return answer;
}
'문제 풀이 > Programmers' 카테고리의 다른 글
| [프로그래머스] 72410번: 신규 아이디 추천 (JavaScript) (0) | 2025.07.04 |
|---|---|
| [프로그래머스] 42840번: 모의고사 (JavaScript) (0) | 2025.07.04 |
| [프로그래머스] 12982번: 예산 (JavaScript) (0) | 2025.07.04 |
| [프로그래머스] 12930번: 이상한 문자 만들기 (JavaScript) (0) | 2025.07.04 |
| [프로그래머스] 76501번: 음양 더하기 (JavaScript) (0) | 2025.07.04 |