프로그래머스/무지의 먹방 라이브(진행중)

2019. 1. 3. 12:41Programming/JavaScript

반응형

[코드프로그래머스/무지의 먹방 라이브](https://programmers.co.kr/learn/courses/30/lessons/42891?language=javascript)


초안

-----

일단 되는대로 만들어봤다. 정확성 테스트조차 몇몇개는 실패다. = ㅅ=

효율성 테스트는 모두 시간초과하는 수준. 탐색하는 로직을 개선하거나, 혹은 메모리를 사용해서 탐색이 필요없게끔 수정이 필요하다.


```

//food_times의 모든 값이 0인지 감지하는 함수

function isAllValueZero (param_array) {

    var isAllZero = true;

    

    for(var i=0; i<param_array.length && isAllZero==true; i++) {

        if (param_array[i] > 0) {

            isAllZero = false;

        }

    }

    

    return isAllZero;

}


//food_times의 다음 index를 찾는 함수

function getNextIndex (param_array, param_current_index) {

    if(param_current_index > param_array.length) return -1;

    

    //for문은 두 개지만 복잡도는 증가하지 않는다.

    for(var i=param_current_index+1, nextIndex = -1; i<param_array.length && nextIndex==-1; i++) {

        param_array[i] == 0 ? nextIndex=-1 : nextIndex=i;

    }

    

    if(nextIndex==-1) {

        for(var i=0; i<param_current_index && nextIndex==-1; i++) {

            param_array[i] ==0 ? nextIndex=-1 : nextIndex=i;

        }

    }

    

    return nextIndex;

}


function solution(food_times, k) {

    var answer = 0;

    var indexOfFoodTimes = 0;

    

    //1. food_times 중 0이 아닌 값들 배열의 인덱스를 찾아야한다.

    //2. food_times 의 모든 값이 0인지 감지할 수 있어야한다.

    while(k>0 && isAllValueZero(food_times) == false) {

        food_times[indexOfFoodTimes]--;

        indexOfFoodTimes = getNextIndex(food_times, indexOfFoodTimes);

        

        k--;

    }

       

    return answer=indexOfFoodTimes+1;

}

```


반응형