알고리즘/프로그래머스

[프로그래머스] 주식가격

하빈H 2022. 9. 3. 00:39

https://school.programmers.co.kr/learn/courses/30/lessons/42584

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

이 문제는 지문을 파악하는게 어려웠다.

매 시점의 주식 가격을 비교한다는게 잘 이해가 안됐고, 초 세는 기준도 애매하다고 느꼈다.

 

초단위 주식 가격이 [1, 2, 3, 2, 3] 이라면 각 초의 주식 가격이 떨어지지 않은 기간은 아래와 같다.

1) 1초 시점 : 1 -> 2 -> 3 -> 2 -> 3까지 모두 비교했는데 1보다 떨어진 초가 없으니 총 4초

2) 2초 시점 : 2 -> 3 -> 2 -> 3까지 모두 비교했는데 2보다 떨어진 초가 없으니 총 3초

3) 3초 시점 : 3 -> 2로 1초만에 가격이 떨어졌으니 총 1초

    (즉, 비교 후 가격 하락 여부와 관계없이 떨어지지 않은 기간을 +1초 해주어야 한다.)

4) 4초 시점 : 2 -> 3까지 모두 비교했는데 가격이 떨어지지 않았으니 총 1초 (???? 3번과 같다.)

5) 5초 시점 : 비교할 대상이 없으니 총 0초 (???)

 

이중 for문으로 풀면 된다고 생각해서 풀었더니 답은 맞았다.

package programmerstest.level2;

import java.util.Arrays;

public class StockPrice {

    public static int[] solution(int[] prices) {

        int len = prices.length;
        int[] answer = new int[len];

        for(int i = 0; i < len; i++) {
            for(int j = i + 1; j < len; j++) {
                answer[i]++;
                if(prices[i] > prices[j]) {
                    break;
                }
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        int[] input1 = {1, 2, 3, 2, 3};
        System.out.println(Arrays.toString(solution(input1)));
    }
}

 

이 문제는 스택/큐로 분류되어있는 문제인데...

다른 사람 풀이를 찾아보니 스택으로 풀기도 한 것 같다.

이건 다음에 다시 풀어봐야겠다 ㅠㅠ