[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문으로 비교하는 방법을 택했다. 내 눈에는 훨씬 간결하고 남이 봐도 이해하기 쉽다고 생각하는데 다른 사람들의 의견도 궁금하다.