본문 바로가기

알고리즘

프로그래머스 체육복(Greedy) - level1

반응형

오늘은 체육복 문제를 풀어보겠습니다.

 

문제는 다음과 같습니다.

https://programmers.co.kr/learn/courses/30/lessons/42862

 

코딩테스트 연습 - 체육복

점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번

programmers.co.kr

 

* 풀이 방법

- 전체 사람이 체육복을 가지고 있다고 초기화를 해줍니다.

- 잃어버린 사람의 체육복은 0 빌려줄 수 있는 체육복은 2로 세팅합니다

- 그리고 잃어버린 사람이면서 옆에 빌려줄 수 있는지를 체크하면 됩니다.

 

* 코드 

function solution(n, lost, reserve) {
    const array = Array(n).fill(1);
    
    for(let i = 0; i < lost.length; i++) {
        array[lost[i]-1]--;
    }
    
    for(let i = 0; i < reserve.length; i++) {
        array[reserve[i]-1]++;
    }
    
    for(let i = 0; i < array.length; i++) {
        if(array[i] === 0) {
            if(array[i-1] === 2) {
                array[i-1]--;
                array[i]++;
            }
            else if(array[i+1] === 2) {
                array[i+1]--;
                array[i]++;
            }
        }
    }
    
    return array.filter(v => v >= 1).length;
}
반응형