[프로그래머스] 체육복😅 & 🥈

GoGoDev·2021년 5월 14일
0

Programmers Lv.1🌱

목록 보기
4/46
post-thumbnail

[프로그래머스] 체육복
https://programmers.co.kr/learn/courses/30/lessons/42862#

그리디문제이다.

function solution(n, lost, reserve) {
    var answer = 0;
    var beforeDonan = [];
    for(let i = 0; i < n; i++){ // 모든 학생이 체육복을 가지고 있었다고 가정.
        beforeDonan[i] = 1;
    }
    for(let i = 1; i <= n; i++){ // 도난 당했을 때, 체육복 갯수 감소 i = 학생 번호 
        for(let j = 0; j < lost.length; j++){ 
            if(i === lost[j])
                beforeDonan[i-1] -= 1;
        }
        for(let k = 0; k < reserve.length; k++){ // 여분 체육복 가진 사람 갯수 증가
            if(i === reserve[k])
                beforeDonan[i-1] += 1;
        }
    }
    //도난당한 친구에게 여분 체육복 나눠주기
    for(let l = 0; l < beforeDonan.length; l++){ 
        if(beforeDonan[l] === 2 && beforeDonan[l+1] === 0) {
            beforeDonan[l] -= 1;
            beforeDonan[l+1] += 1;
        }
        if(beforeDonan[l+1] === 2 && beforeDonan[l] === 0){
            beforeDonan[l+1] -= 1;
            beforeDonan[l] += 1;
        }
        if(beforeDonan[l] === 2 || beforeDonan[l] === 1)
            answer++;
    }
    return answer;
}

테스트케이스는 쉽게 통과했지만 답안 제출을 했을 때는 정답률이 처참했다..
다양한 테스트 케이스에 대해 고민을 해봐야겠다고 느꼈다.

profile
🐣차근차근 무럭무럭🐣

0개의 댓글