undefined
[프로그래머스] 체육복 -JS 본문
반응형
문제 설명
문제 풀이
function solution(n, lost, reserve) {
const students = new Array(n).fill(1)
lost.map(l => students[l-1]--)
reserve.map(r => students[r-1]++)
students.map((_,i)=> {
if(students[i] > 1 && students[i-1] === 0 ) {
students[i]--
students[i-1]++
} else if (students[i]>1&&students[i+1] === 0) {
students[i]--
students[i+1]++
}
})
return students.filter(s => s > 0).length
}
1. 학생 수 n 길이 만큼의 배열을 만들고 모두 체육복이 1개씩 가지고 있다고 가정
2. 잃어버린 사람들과 여분이 있는사람들의 갯수를 맵핑하여 각각 더하고 빼줌 => 현재 실 소유수
3. 위에서 구한 실 보유수 배열에서 현재 보유수가 2이상이고 이전의 학생이 0일때 각각 -1, +1해줌 => 작은 수 부터 해줘야 가장 많이 빌려줄수 있다.
4. 다음학생일 경우에도 똑같에 반복
5. 결과 값에서 0보다 큰 학생들의 길이를 리턴
개선 사항
반응형
'Coding Test' 카테고리의 다른 글
[프로그래머스] 최소 직사각형 -JS (0) | 2022.06.22 |
---|---|
[프로그래머스] 폰켓몬 -JS (0) | 2022.06.20 |
[프로그래머스] 모의고사 -JS (0) | 2022.06.11 |
[프로그래머스] 숫자 문자열과 영단어 -JS (0) | 2022.06.10 |
[프로그래머스] 3진법 뒤집기 -JS (0) | 2022.06.09 |
Comments