카테고리 없음

알고리즘 문제

rxo2 2025. 5. 7. 21:06
public class Solution 
{
    public int[] solution(int[] prices) 
    {
        int n = prices.Length;           // 가격 배열의 길이 저장 (초의 개수)
        int[] answer = new int[n];       // 결과를 저장할 배열 초기화

        // i초 시점의 주식 가격에 대해 반복
        for (int i = 0; i < n; i++) 
        {
            int time = 0;                // 가격이 떨어지지 않은 시간을 저장할 변수

            // i초 이후의 가격들을 확인
            for (int j = i + 1; j < n; j++) 
            {
                time++;                  // 1초가 지남

                // 가격이 떨어지면 반복 종료
                if (prices[j] < prices[i]) break;
            }

            // 떨어지지 않은 시간을 결과 배열에 저장
            answer[i] = time;
        }

        return answer;                   // 결과 반환
    }
}

 

풀이

입력값: prices = [1, 2, 3, 2, 3]

  • i = 0: 가격 1 → [2, 3, 2, 3] 전부 크거나 같음 → 4초 동안 유지
  • i = 1: 가격 2 → [3, 2, 3] 전부 크거나 같음 → 3초 동안 유지
  • i = 2: 가격 3 → 다음에 2로 떨어짐 → 1초 유지
  • i = 3: 가격 2 → 다음에 3 → 안 떨어짐 → 1초 유지
  • i = 4: 마지막 → 뒤에 없음 → 0초

최종 출력: [4, 3, 1, 1, 0]