반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

undefined

[프로그래머스] 체육복 -JS 본문

Coding Test

[프로그래머스] 체육복 -JS

JavaScripter 2022. 6. 19. 19:07
반응형

문제 설명


문제 풀이

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보다 큰 학생들의 길이를 리턴


개선 사항

반응형
Comments