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

JeongPark·2022년 3월 15일
0

Algorithm

목록 보기
3/11
post-thumbnail

문제설명

문제링크

프로그래머스(Level1) 체육복

접근 방법

  1. n명의 학생 모두가 체육복을 가지고 있다고 가정.
    -> student 배열 1로 초기화 (1번 index부터 사용)
  2. 체육복을 도난당한 학생은 -1 , 여벌의 체육복을 가져온 학생은 +1을 함.
    -> 각각 lost, reserve 배열에 맞춰 student배열의 값을 ± 1.
  3. 단방향 진행으로 여벌의 체육복을 가지고 있는 학생이 도난당한 학생에게 빌려주기
    -> student 배열에서 인접한 배열의 값의 차이가 2인 경우, answer++ 과 함께 인접한 인덱스의 값을 1로 변경

코드

function solution(n, lost, reserve) {
    let student = new Array(n+1).fill(1);
    student[0]=0;
    for(let i=1;i<=lost.length;++i){
        student[lost[i-1]]-=1;
    }
    for(let i=1;i<=reserve.length;++i){
        student[reserve[i-1]]+=1;
    }
    let answer = student.filter(n=>n!==0).length;
    for(let i=1;i<=n;++i){
        if(student[i]===0&&student[i+1]===2||student[i+1]===0&&student[i]===2){
            student[i]=1;
            student[i+1]=1;
            answer++;
        }
    }
    return answer;
}
profile
無汗不成(무한불성) : 땀을 흘리지 않고는 이룰 수 없다.

0개의 댓글

관련 채용 정보