Algorithm
프로그래머스 level 2 - 주식가격 (javascript 풀이)
Boyoung Yun
2023. 8. 16. 23:13
반응형
문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
| prices | return |
| [1,2,3,2,3] | [4,3,1,1,0] |
입출력 예 설명
- 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
- 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
- 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
- 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
- 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.
※ 공지 - 2019년 2월 28일 지문이 리뉴얼되었습니다.
해당 문제는 처음 딱 읽었을 때, 무슨 소린지 도통 이해가 되지 않았다.
평소 주식에 관심이 없기도 하지만.. 끝까지 가격이 떨어지지 않는다? 1초뒤에 가격이 떨어진다? 이게 무슨 소리인가..
그래서 문제를 계속해서 읽어보면서 머리를 계속 싸매다 질문 탭에서 어떤 분께서 문제를 정리해주신 걸 보았다.
(나만 문제가 잘 이해가 안된 건 아니였나보다..)
- 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 해당 문장을
- 1초 시점의 ₩1은 끝까지 주가를 유지했습니다. 이렇게 이해하면 쉽다.
또한,
- 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 해당 문장을
- 3초의 주가는 3이며 4초의 주가는 2로 주가가 떨어졌지만 3초에서 4초가 되기 직전까지의 1초간 주가가 유지 된것으로 봅니다. 따라서 5초까지 총 1초간 주가를 유지했습니다. 이렇게 이해하면 쉽다.
즉 한번 주식을 매수했을 때, 가격이 떨어지면 주식을 산 시점부터 가격이 떨어지기 바로 직전까지의 시간을 주가를 유지한 시간으로 이해하면 된다.
그럼 어떻게 접근하면 되겠는가? 바로 주식이 떨어지기 직전까지 count를 1씩 더하고, 떨어지면 바로 break하면 된다.
이렇게 간단한 문제였다.. 문제를 이해하고 나니 문제 푸는 데는 5분도 안걸렸다.
문제 풀이
function solution(prices) {
var answer = [];
for(var i=0; i<prices.length; i++)
{
var sum = 0;
for(var j=i+1; j<prices.length; j++)
{
sum++;
if(prices[i] > prices[j]) break;
}
answer.push(sum);
}
return answer;
}반응형