[JavaScript][Programmers] 체육복

조준형·2021년 7월 6일
0

Algorithm

목록 보기
17/142
post-thumbnail

🔎 체육복

❓ 문제링크

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

📄 제출 코드

function solution(n, lost, reserve) {
    let student = new Array(n).fill(1);
    
    reserve.forEach(e => {
        // console.log(e);
        student[e - 1]++;
    })
    lost.forEach(e => {
        student[e - 1]--;
    })
  
	// console.log(student)

    student.forEach((s, idx) => {
        if (s == 0 && student[idx - 1] == 2) {
            student[idx] = 1;
            student[idx - 1] = 1;
        } else if (s == 0 && student[idx + 1] == 2) {
            student[idx] = 1;
            student[idx + 1] = 1;
        }
    });
    var answer = 0;
    student.forEach(e => {
        if (e > 0) answer++;
    })
    return answer;
}

let n = 5;
let lost = [3];
let reserve = [1, 2, 3, 5];
console.log(solution(n, lost, reserve))

먼저 student라는 배열을 1로 다 채우고, reserve는 +1, lost는 -1을 한다.
그 후 student를 돌면서 0인 값(체육복이 없는 친구) 중에 앞의 번호가 2인 경우, 1로 변경.
0인 값(체육복이 없는 친구)중에 뒤의 번호가 2인 경우, 1로 변경.
모든 작업이 끝나고, student에 1이상인 값이 있으면 answer에 +1 하여 answer를 리턴.

처음에 e==1인 경우만 answer에 +1했었는데, 틀렸다고 나와서 다시생각해보니까 옷이 2벌이여도 참가는 가능하기 때문에 0보다 크면 다 더하는게 맞다.

profile
깃허브 : github.com/JuneHyung

0개의 댓글