알고리즘 공부

21.09.19 [프로그래머스] 출석 이벤트

슈팅스타제제 2021. 9. 20. 23:28

코딩테스트 문제를 풀었는데 정확도 점수는 만점인데 효율성 점수는 0점이다...

답을 도출하는 것 뿐만 아니라 코드 효율성도 생각해야겠다. 

 

문제 설명
게임에 접속한 모든 유저에게 아이템을 지급하는 출석 이벤트를 k일 동안 진행하려 합니다. 날짜별 추정 접속자 수가 주어질 때, k일 동안 추정 접속자 수의 합이 최대가 되도록 이벤트 기간을 정하려 합니다.

날짜별 추정 접속자 수가 순서대로 담긴 배열 estimates와 출석 이벤트를 진행하는 기간 k가 매개변수로 주어집니다. k일 동안 추정 접속자 수의 합이 최대가 되도록 이벤트 기간을 정했을 때, 그 때의 추정 접속자 수 합을 return 하도록 solution 함수를 완성해주세요.

 

제한 조건
estimates는 길이가 1 이상 200,000 이하인 배열입니다.
estimates의 원소는 10,000 이하인 자연수입니다.
k는 1 이상 100,000 이하이고, estimates의 길이보다 작거나 같습니다.

 

function solution(estimates, k) {
    /*
    1. 모든 대상 일수에서 탐색할 바깥쪽 루프문 
    2. 이벤트 일수만큼 탐색할 안쪽 루프문
    3. Max 처리 
    */
    var n = estimates.length;
    var i = 0; //외부 이터레이션
    var m = 0; //내부 이터레이션
    var dummy = 0; //합산 더미 변수
    var checkMost = []; //날짜별 추정 접속자 수 배열
    
    for(i=0; i<n-k+1; i++){
        
        for(m=k-1; m>=0; m--){
            dummy = dummy + estimates[i+k-m-1];
        }
        
        checkMost.push(dummy);
        dummy = 0;
    }
    //console.log(checkMost);
    var answer = Math.max.apply(null, checkMost);
    //console.log(answer);
    return answer;
}

'알고리즘 공부' 카테고리의 다른 글

21.12.11 XOR 연산자  (0) 2021.12.17
21.09.19 [프로그래머스] 주식 시세 차익  (0) 2021.09.22
21.06.11 A+B-5  (0) 2021.06.13
21.06.10 A+B - 3  (0) 2021.06.10
21.06.10 구구단  (0) 2021.06.10