프로그래머스 | 체육복_JS

난이도 : Level. 1
언어 : Javascript
출제 내역 : 탐욕법

❓ Question

체육복을 잃어버린 사람과 여벌로 가져온 사람이 있다.
양 옆에 있는 사람만 빌려줄 수 있는데,
그렇다면 체육복을 입고 체육시간에 나간 사람의 수를 구해보자

📝 My Solution

전체 풀이 코드 👈🏻 클릭시 Github로 이동

function solution(n, lost, reserve) {
    var answer = 0;
    let newArr = [];
        for (let i = 0; i<reserve.length; i++) {
          if (reserve.indexOf(lost[i]) > -1) {
            let minusNum = lost[i]
            lost.splice(lost.indexOf(minusNum),1);
            reserve.splice(reserve.indexOf(minusNum),1);
          }
        }

우선 여벌로 가져온 사람이 하나를 잃어버린 경우가 있으니
그 부분을 먼저 제외해 줍니다.
잃어버린 사람과 여벌로 가져온 사람의 배열에서 해당 숫자를 제거합니다.

for (let i = 1; i<=n; i++) {
            newArr.push(i)
            if (lost.indexOf(i) > -1) {
                newArr.pop()
                if (reserve.indexOf(i) > -1) {
                    newArr.push(i);
                    reserve.splice(reserve.indexOf(i),1)
                } else if (reserve.indexOf(i-1) > -1) {
                    newArr.push(i);
                    reserve.splice(reserve.indexOf(i-1),1)
                } else if (reserve.indexOf(i+1) > -1) {
                    newArr.push(i);
                    reserve.splice(reserve.indexOf(i+1),1)
                }
            }
        }
    return answer=newArr.length;
}

그 다음, 새 배열에 학생 번호를 먼저 넣어주고,
잃어버린 사람인지 체크하고, 그 앞뒤 번호에 여벌로 가져온 사람이 있는지 체크해
번호를 배열에 채워준 뒤, 해당 배열의 길이를 결과로 도출합니다.

결과

좋은 웹페이지 즐겨찾기