문제 설명
초 단위로 기록된 주식가격이 담긴 배열 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초간 가격이 떨어지지 않았습니다.
풀이 코드
스레기와도 같은 가독성을 가진 문제. 문제 이해하는데만 30분을 넘게 잡아먹은 것 같다 .. 이해만 했다면 어렵지 않게 풀 수 있고 굳이 Stack or Queue 로 안풀어도 풀린다. 효율성에 강박을 가지지 말자 ㅎ.ㅎ 나는 그냥 투 포인터를 곁들인 완전탐색으로 풀이했다.
질문하기에 다른 분이 지문 재해석을 올려놓았다. 이해가 안되면 이걸 보고 오면 될 듯.
https://school.programmers.co.kr/questions/20326
import java.util.Arrays;
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
int lt = 0;
int rt = 1;
for (int i = 0; i < prices.length; i++) {
while (rt != prices.length) {
int stand = prices[lt];
int compare = prices[rt];
// 가격 방어 성공
if (stand <= compare) {
answer[lt]++;
rt++;
// 가격 방어 실패
} else {
answer[lt]++;
break;
}
}
lt++;
rt = lt + 1;
}
return answer;
}
}
'알고리즘 정리' 카테고리의 다른 글
자바(Java) 알고리즘 문제풀이 귤 고르기 [프로그래머스 / 그리디] (1) | 2022.12.01 |
---|---|
자바(Java) 알고리즘 문제풀이 단어변환 [프로그래머스 / DFS] (0) | 2022.11.24 |
자바(Java) 알고리즘 문제풀이 프린터 [프로그래머스 / 스택/큐] (0) | 2022.11.23 |
자바(Java) 알고리즘 문제풀이 순위 [프로그래머스 / 플로이드-와샬] (0) | 2022.11.23 |
자바(Java) 알고리즘 문제풀이 떡볶이 떡 만들기 [이코테 / 이분탐색] (0) | 2022.10.09 |