알고리즘 공부

21.09.19 [프로그래머스] 주식 시세 차익

슈팅스타제제 2021. 9. 22. 00:49

문제 설명
1일부터 N일까지, 날짜별 주가가 순서대로 들어있는 배열이 있습니다. 이때, 주식을 구매한 후 차익을 얻기까지 날짜별로 최소 며칠씩 기다려야 하는지 알고 싶습니다.

예를 들어 N = 5일 때 1일부터 5일까지 각 날짜의 주가가 [4, 1, 4, 7, 6]인 경우,

1일에 주식을 4원에 산 후, 2일 혹은 3일에 주식을 판매하면 차익이 없으며, 4일에 주식을 판매하면 차익 3원을 얻습니다. 따라서 1일에 주식을 산 후, 차익을 얻기까지 최소 3일이 지나야 합니다.
마찬가지로 2일에 주식을 1원에 산 경우 하루가 지나면 차익을 얻으며, 3일에 주식을 4원에 산 경우에도 하루 뒤에 차익을 얻습니다. 그러나 4일, 5일에 각각 7원, 6원에 주식을 산 경우에는 차익을 얻을 수 있는 날이 없습니다.
1일부터 N일까지 날짜별로 주식의 가격이 순서대로 들어있는 배열 price가 매개변수로 주어질 때, 날짜별로 차익을 얻으려면 최소 며칠을 기다려야 하는지 알려주는 배열을 return 하도록 solution 함수를 완성해주세요.

 

function solution(price) {
    var i = 0;
    var k = 0;
    var n = 0;
    var answer = [];
    for(i=0;i<price.length; i++){
        for(k=i+1; k<=price.length; k++){
            if(price[k] > price[i]){
                n++;
                answer[i] = n;
                //console.log('i',i, 'n', n, 'price[i]', price[i], 'price[k]', price[k], 'answer[i]', answer[i]);
                n=0;
                break;
            }else{
                n++;
                answer[i] = -1;
            }
        }
    }
    return answer;
}

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

23.06.12 Depth First Search  (0) 2023.06.12
21.12.11 XOR 연산자  (0) 2021.12.17
21.09.19 [프로그래머스] 출석 이벤트  (0) 2021.09.20
21.06.11 A+B-5  (0) 2021.06.13
21.06.10 A+B - 3  (0) 2021.06.10