728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/42584#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이 방법
- stack을 이용해 풀이를 진행했다.
문제는 각 가격이 언제까지 떨어지지 않는가를 측정하는 문제인데,
떨어지는 기준은 해당 가격보다 아래로 내려가는 것이다. - 스택에 떨어지지 않는 가격의 인덱스를 담고, 이후에 떨어지게 되면 stack의 마지막 요소부터 빼줘서 기간을 계산한다.
- 위의 과정을 거치고도 stack에 남아있는 수들은 한번도 떨어지지 않은 가격이므로
가격 배열의 길이에서 인덱스값을 빼주고 -1을 계산해주면 기간이 계산된다.
코드
const solution = (prices) => {
let answer = Array.from({length: prices.length}, () => 0);
let stack = [];
let length = prices.length;
for(let i=0; i<length; i++){
while(stack.length && prices[i] < prices[stack[stack.length - 1]]){
let temp = stack.pop();
answer[temp] = i - temp;
}
stack.push(i);
}
// stack에 남아있는 경우는 끝까지 가격이 떨어지지 않는 경우
while(stack.length){
let temp = stack.pop();
answer[temp] = length - temp - 1;
}
return answer;
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 2Level / 연습문제 / 롤케이크 자르기 (0) | 2023.09.16 |
---|---|
[JS] 2Level / 2018 KAKAO BLIND RECRUITMENT / [3차] 파일명 정렬 (0) | 2023.09.14 |
[JS] 2Level / Summer/Winter Coding(~2018) / 방문 길이 (0) | 2023.09.12 |
[JS] 2Level / 연습문제 / 뒤에 있는 큰 수 찾기 (0) | 2023.09.11 |
[JS] 2Level / 완전탐색 / 땅따먹기 (0) | 2023.09.09 |