티스토리 뷰

문제 링크입니다 : https://programmers.co.kr/learn/courses/30/lessons/42862

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

고등학생 때 생각이 나는 문제였다. 체육복 훔쳐가는 놈들.. ㅂㄷㅂㄷ

 

문제 유형은 탐욕법인데, 나는 그냥 완전 탐색을 했다.

 

과정은 재귀적으로 구현했고, 자바스크립트가 익숙하지 않아서.. 좀 엉망이다.

 

 

 

 

function getCnt(student, index, cnt) {
    if(index == student.length) {
        return cnt;
    }
    
    if(student[index] === 0) {
        let leftCnt = 0;
        let rightCnt = 0;
        if(index !== 0 && student[index - 1] === 2) {
            student[index - 1]--;
            student[index]++;
            leftCnt = getCnt(student, index + 1, cnt + 1);
            student[index - 1]++;
            student[index]--;
        }
        if(index + 1 !== student.length && student[index + 1] === 2) {
            student[index + 1]--;
            student[index]++;
            rightCnt = getCnt(student, index + 1, cnt + 1);
            student[index + 1]++;
            student[index]--;
        }
        return Math.max(leftCnt, rightCnt, getCnt(student, index + 1, cnt));
        
    } else {
        return getCnt(student, index + 1, cnt);
    }
    
}



function solution(n, lost, reserve) {
    var answer = 0;
    
    let student = new Array(n).fill(1);
    lost.forEach(function(el) {
        student[el - 1]--; 
    });
    
    reserve.forEach(function(el) {
       student[el - 1]++; 
    });
    
    let cnt = 0;
    for(let i = 0; i < student.length; i++) {
        if(student[i] >= 1) cnt++;
    }
    
    answer = getCnt(student, 0, cnt);
    
    return answer;
}

 

 

 

개발 환경 : vscode

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

프로그래머스 - 체육복 (JavaScript)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함