초 단위로 기록된 주식가격이 담긴 배열 prices
가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
prices
의 각 가격은 1 이상 10,000 이하인 자연수입니다.prices
의 길이는 2 이상 100,000 이하입니다.prices | return |
---|---|
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
※ 공지 - 2019년 2월 28일 지문이 리뉴얼되었습니다.
풀이 이전, 해당 문제는 카테고리에서 알 수 있듯이 스택/큐 문제이다.
하지만 많은 알고리즘 문제를 풀며 항상 가장 쉬운 길을 택하는 것은 본능이다.
prices
의 각 가격은 1 이상 10,000 이하인 자연수입니다.prices
의 길이는 2 이상 100,000 이하입니다.
이런 제한사항을 두고 어찌 2중 반복문을 사용하지 않을 수 있을까
바로 사용해보았다.
function solution(prices) {
const result = []
for(let i = 0 ; i < prices.length-1 ; i ++) {
let second = 0
for(let j = i ; j < prices.length-1 ; j ++) {
// 가격이 유지되었다면 카운트
if(prices[i] <= prices[j]) second++
else break
}
result.push(second)
}
// 마지막 요소는 가격을 유지할 수 없기에 항상 0
result.push(0)
return result
}