[Algorithm] 프로그래머스 - 체육복 (Javascript)

swing·2021년 8월 4일
1

[Algorithm]

목록 보기
4/96

풀이

  1. n+1 만큼의 length를 가진 students 배열을 선언한다. (index 1부터 사용하기 위함)
  2. students 배열값을 모두 1로 세팅한다. (일단 모두가 체육복을 가지고 있다고 가정)
  3. reserve를 순회하며 배열값에 해당하는 students index값을 2로 바꾼다.
  4. lost를 순회하며 배열값에 해당하는 students index값을 -1 해준다.
  5. students를 순회하며 0이하가 아닐경우 answer++ 해준다.
  6. 0이하인 index를 만나면 앞뒤 index가 2인지 판단한다.
  7. 하나라도 2가 있으면 해당 index는 +1 , 다른 index는 -1을 해준다.
  8. +1을 해줄때 answer++ 해준다.
  9. return answer

코드

function solution(n, lost, reserve) {
    let answer = 0;
    
    const students = new Array(n+1).fill(1);
    
    reserve.forEach(v=>students[v] = 2);
    lost.forEach(v=>students[v]--);
    
    for(let i=1;i<students.length;i++){
        if(students[i] > 0) {
            answer++;
        }
        else{
            if(students[i+1] === 2){
                students[i]++;
                students[i+1]--;
                answer++;
            }
            else if(students[i-1] === 2){
                students[i]++;
                students[i-1]--;
                answer++;
            }
            else{
                continue;
            }
        }   
    }
    return answer
}
profile
if(기록📝) 성장🌱

0개의 댓글