[Java, 자바] 프로그래머스 주식가격 문제알고리즘/프로그래머스2024. 3. 18. 13:08
Table of Contents
728x90
프로그래머스
👉🏻 https://school.programmers.co.kr/learn/courses/30/lessons/42584
# 난이도 : LV2
문제내용
제한사항
입출력 예
풀이방법
이번 문제는 설명이 많이 이해하기 어려웠습니다....저 뿐만 아니라 많은 사람이 그렇게 느낀 것 같더라구요....
이해하기 쉽게 잘 정리해 놓으신 분의 내용을 참고하여 풀이하였습니다.
간단하게 요약하자면 각 초의 주가를 기준으로 해당 초부터 n초 사이에 가격이 떨어지지 않는 시간을 구하는 문제이더라구요 !
그래서 Queue를 활용하여 문제 풀이를 진행하였으며, target이라는 변수에 Q에 있는 주가를 poll한 뒤 Q에 남은 값을 활용하여 answer의 인덱스를 증가 시켜주었며, target가 Q의 주가보다 클 때, 즉 주가가 감소하였을 때 break를 실행하였습니다.
만약 [3, 2]이라는 주가 배열이 주어졌을 때 0번 인덱스 기준으로 3 -> 2 주가는 감소하였지만 1번 인덱스로 변경되기까지 1초간의 주가가 유지되었으므로 target과 Q의 값을 비교하기 전 answer의 값을 먼저 증가시켜주었습니다. 마지막 인덱스의 값은 더이상 비교할 값이 없기 때문에 while문 내부의 for문은 동작하지 않습니다 !
코드
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
Queue<Integer> Q = new LinkedList<>();
for(int x : prices) Q.offer(x);
int index = 0;
while(!Q.isEmpty()){
int target = Q.poll();
for(int x : Q){
answer[index]++;
if(target > x) break;
}
index++;
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Java, 자바] 프로그래머스 타겟 넘버 (0) | 2024.03.18 |
---|---|
[Java, 자바] 프로그래머스 귤 고르기 (0) | 2024.03.06 |
[Java, 자바] 프로그래머스 게임 맵 최단거리(BFS) (2) | 2024.03.06 |
@차나니 :: 차나니의 개발일지
개발의 모든 것 !
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!