코드 풀이

체육복

SammyK 2022. 3. 17. 14:04

풀이

function solution(n, lost, reserve) {
    let answer = 0;
    const uniform = [];

    // 0) 모두가 체육복을 1벌씩 가지고 있도록 설정
    for (let i = 0; i < n; i++) {
        uniform[i] = 1;
    }

    // 1) 체육복을 도난당한 학생의 체육복을 0개로 수정
    for (let i = 0; i < lost.length; i++) {    
        uniform[lost[i]-1] = 0;
    }

    // 2) 여벌의 체육복을 가져온 학생의 체육복을 +1개로 수정
    for (let i = 0; i < reserve.length; i++) {
        uniform[reserve[i]-1] += 1;
    }

    // 3-1) 체육복이 0개인 학생이 앞번호에서 체육복을 빌려올 수 있는 경우
    for (let i = 0; i < n; i++) {
        if (uniform[i-1] === 2 && uniform[i] === 0) {
            uniform[i-1] = 1;
            uniform[i] = 1;

    // 3-2) 체육복이 0개인 학생이 뒷번호에서 체육복을 빌려올 수 있는 경우
        } else if (uniform[i] === 0 && uniform[i+1] === 2) {
            uniform[i] = 1;
            uniform[i+1] = 1;
        }
    }

    // 결과: 체육복을 1개 이상 가지고 있게 된 학생의 수를 카운트 후, 답안 제출
    for (let i = 0; i < n; i++) {
        if (uniform[i] > 0) {
            answer++;
        }
    }

    return answer;
}

https://dev4self.tistory.com/16


function solution(n, lost, reserve) {      
    return n - lost.filter(a => {
        const b = reserve.find(r => Math.abs(r-a) <= 1)
        if(!b) return true
        reserve = reserve.filter(r => r !== b)
    }).length
}

 

'코드 풀이' 카테고리의 다른 글

오픈 채팅방  (0) 2022.03.26
문자열 압축  (0) 2022.03.25
비밀지도  (0) 2022.03.17
소수 찾기  (0) 2022.03.17
폰켓몬  (0) 2022.03.17