Nomad Engineer

[일일코테 Day6] 체육복 - 프로그래머스(레벨1) 본문

개발/코딩테스트

[일일코테 Day6] 체육복 - 프로그래머스(레벨1)

universehan 2021. 3. 1. 13:32

문제

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

 

코딩테스트 연습 - 체육복

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

programmers.co.kr

풀이

 

코딩

function solution(n, lost, reserve) {
    const students = [];
    for (let i=0; i<n; ++i) {
        students.push(1);
    }
    
    reserve.forEach(r => {students[r-1] = 2})
    lost.forEach(l => {students[l-1] -= 1})
    
    
    let answer = 0;
    students.forEach((s, i, students) => {
        if (s > 0) {
            answer++;
            return;
        }
        
        if (i > 0 && students[i-1] === 2) {
            students[i-1] = 1;  // borrow from before
            students[i] = 1;
            answer += 1;
        } else if (i < students.length-1 && students[i+1] === 2) {
            students[i+1] = 1;  // borrow from next
            students[i] = 1;
            answer += 1;
        }
    });
    return answer;
}

실수

- 여분 체육복을 가지고 온 학생도 도난당할 수 있다는 제약 사항을 잘 확인 하지 못했다.

 

반응형