본문 바로가기
Coding Test/JavaScript

[Javascript] (프로그래머스 level 1) 체육복

by Chaedie 2022. 6. 30.
728x90

[Javascript] (프로그래머스 level 1) 체육복

💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.

내 풀이

function solution(n, lost, reserve) {
    // 1) 배열을 1로 채우고 (0은 0)
    const arr = new Array(n + 1).fill(1);
    arr[0] = 0;    

    // 2) 도난 당한 학생은 -1, 여벌 학생은 +1
    reserve.forEach((x) => arr[x]++);
    lost.forEach((x) => arr[x]--);

    // 3) 체육복 갯수가 0이면 주변 2인 친구한테 하나 가져오기    
    for (let i = 1; i < n + 1; i++) {
        if (arr[i] === 0) {
            askFriend(arr, i);            
        }
    }

    return arr.filter((x) => x > 0).length
}

function askFriend(arr, i) {
    // 앞 친구가 2개면 빌리기
    if (arr[i - 1] === 2) {
        arr[i - 1]--;
        arr[i]++;
        return 
    }
    // 뒷친구 없으면 나가기
    if (i + 1 === arr.length) {
        return;
    }
    // 뒷친구 있으면서, 2개면 빌리기
    if ( arr[i + 1] === 2) {
        arr[i + 1]--;
        arr[i]++;
        return
    }
    // 아니면 나가기
    return;
}

Untitled

  • 진짜 어이없네요 ㅋㅋㅋㅋㅋ 테스트 4, 5 기댓값이 손으로 새보아도 제코드 리턴값이 맞는데 자꾸 틀리다길래 뭐지 ? 했는데, 제출해보니 모든 테스트 케이스 다 통과되네요 ㅋㅋㅋㅋ 내 20분 어쩔거야? 😭

배운 점, 느낀 점

  • 테스트 케이스가 틀릴수도있으니 일단 제출해보자. 시간 날리지 말고!

댓글