프로그래머스 - 주식가격

박상원·2023년 12월 14일
0

Coding Test

목록 보기
15/18

오늘은 프로그래머스의 주식가격이라는 문제를 풀어보았다.
문제 설명은 다음과 같다.

문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.

제한사항

  • prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
  • prices의 길이는 2 이상 100,000 이하입니다.

이 문제는 주식 가격이 담겨있는 배열을 보고 해당 시점의 값이 몇 초까지 유지되는지 측정하는 문제이다.

문제를 보고 풀이를 생각해보았다.
주식 가격들을 보고 해당 시점의 주식 가격과 이후의 주식 가격을 비교해서 해당시점보다 가격이 작아질 때까지 유지 시간을 증가시키고 작아지면 유지시간을 입력해주는 형태를 생각해 보았다.

문제 풀이 코드는 다음과 같다.

class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        
        for (int i = 0; i < prices.length - 1; i++) {
            int count = 1;
            for (int j = i + 1; j < prices.length - 1; j++) {
                if (prices[i] <= prices[j]) {
                    count++;
                } else {
                    break;
                }
            }
            answer[i] = count;
        }
        
        return answer;
    }
}

우선 answer를 prices의 길이만큼의 배열로 초기화를 시켜주고 prices배열의 길이만큼 반복문을 돌려준다.

반복문 안에서는 count를 1로 초기화해주고 이후의 값만큼 반복문을 비교해주고 이후의 값이 크면 count를 증가시키고 작으면 반복문을 종료해준다.

내부 반복문이 종료된 후 answer의 해당 주식의 인덱스에 count값을 삽입해준다.

반복문이 종료된 후 answer를 반환하면 정답을 받을 수 있다.

0개의 댓글