[프로그래머스] 주식 가격 - JavaScript
2023. 8. 21. 15:56ㆍ코딩연습
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/42584
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 풀이
- 입력 값으로 들어오는 prices의 배열에서 각각 얼마나 가격이 떨어지지 않은 시간을 재는 문제이다.
- prices = [1,2,3,2,3] 일때
- 1은 끝까지 가격이 떨어지지 않아 4
- 2는 끝까지 가격이 떨어지지 않아 3
- 3은 바로 다음 1초 뒤에 가격이 떨어져 1
- 2는 끝까지 가격이 떨어지지 않아 1
- 3은 가격이 떨어지지 않아 0
- 문제 해석에 어려움이 조금 있었다.
function solution(prices) {
const answer = []; // 가격이 떨어지지 않은 기간을 담을 배열.
// 가격에 대한 반복.
for(let i = 0; i < prices.length; i++){
let count = 0; // 가격이 떨어지지 않은 횟수를 담을 변수.
let price = prices[i]; // 기준 값.
// 만약 prices 배열의 마지막이라면 무조건 0 이기 때문에.
if(i === prices.length - 1) {
answer.push(0);
break;
}
// 기준 값의 다음 값부터 비교를 진행하는 반복문.
for(let j = i+1; j < prices.length; j++){
count++; // 무조건 1초는 지나있다고 판단하여 먼저 count를 증가.
if(price > prices[j]) break; // 만약 기준값이 다음 값보다 크게 되는 경우 반복문 종료.
}
// 가격이 떨어지지 않은 횟수를 배열에 저장.
answer.push(count)
}
return answer;
}
3. 정리
- 처음 제공되는 테스트케이스는 쉽게 통과했지만, 채점 결과에서 1번 케이스를 제외하고는 모두 틀렸다고 나와 당황했었다.
- 다른 테스트케이스를 통해 이 문제에 대해 이해할 수 있었다.
- 입력 값 : [2, 2, 3, 1, 5] / 출력 값 : [3, 2, 1, 1, 0]
- 3을 예시로 들면, 다음으로 오는 값이 1 이다. 이는 1초 뒤에 가격이 떨어진다고 생각을 해야한다는 점이었다.
'코딩연습' 카테고리의 다른 글
[백준 알고리즘] Node.js 15671. Lemonade Line (0) | 2023.08.30 |
---|---|
[백준 알고리즘] Node.js 2865. 나는 위대한 슈퍼스타K (0) | 2023.08.29 |
[프로그래머스] 더 맵게 - JavaScript (0) | 2023.08.18 |
[백준 알고리즘] Node.js 1531. 투명 (0) | 2023.08.10 |
[백준 알고리즘] Node.js 1439. 뒤집기 (0) | 2023.08.10 |