[Programmers/JAVA] 주식가격
2023. 2. 28. 02:05ㆍ자바/프로그래머스
내 코드
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int[] answer= new int[prices.length];
//queue 선언
Queue<Integer> queue=new LinkedList<>();
//queue에 prices 전체리스트 값 추가
for(int i=0; i<prices.length; i++) {
queue.offer(prices[i]); // 값 추가 실패 시 null, 성공시 값 반환.
}
for(int index=0; index<prices.length; index++) {
//기준이 되는 값 반환 후 삭제
int standard_price= queue.poll();
//기준값보다 그 뒤의 값이 더 작다면 break.
for(int q : queue) {
answer[index]++;
if(standard_price > q) {
break;
}
}
}
return answer;
}
}
느낀점
스택/큐 문제여서 스택과 큐를 사용할 생각을 했었다. 첫번째 값과 그 이후의 값을 비교한다는 점에서 큐를 사용하는게 좋겠다 생각했다. 처음에는 index++ 될 때마다 queue를 clear해주고 값을 새로 다 주는 방식을 택했는데 시간이 정말 너무 오래 걸려서 다른 방법을 생각해내게 됐다. 훨씬 더 간결하고 빨리 계산하는 방법이라 더 마음에 든다. queue에서 값을 계속 꺼내 비교할 필요없이, 처음값만 꺼내 standard_price로 만들고 그 이후 값들을 for문으로 비교하는 방법을 택했다. 내 눈에는 훨씬 간결하고 남이 봐도 이해하기 쉽다고 생각하는데 다른 사람들의 의견도 궁금하다.
'자바 > 프로그래머스' 카테고리의 다른 글
[Programmers/JAVA] 약수의 합 (0) | 2023.03.21 |
---|---|
[Programmers/JAVA] 다리를 지나는 트럭 (0) | 2023.03.04 |
[Programmers/JAVA] k진수에서 소수 개수 구하기 (0) | 2023.02.24 |
[Programmers/JAVA] 전화번호 목록 (0) | 2023.02.23 |
[Programmers/JAVA] 연속 부분 수열 합의 개수 (0) | 2023.02.22 |