본문 바로가기

Algorithm/Programmers

(lv2) 주식가격

문제 설명

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

제한사항

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

입출력 예

pricesreturn

[1, 2, 3, 2, 3] [4, 3, 1, 1, 0]

입출력 예 설명

  • 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
  • 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
  • 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
  • 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
  • 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.

내 접근 방법

  1. 먼저 큐/스택에 있는 문제이기 때문에 어떻게든 스택 및 큐를 사용해보려고 했다.
  2. 스택보다는 큐를 사용하여 prices에 있는 값들을 집어넣고 어떻게 할지 고민함..
  3. 생각해보다가 굳이 사용안하고 이중 for문을 이용하면 될 것 같다라는 생각이 들었다.
  4. i와 j를 변수를 두고 안에 조건문을 통해 비교하려고 했다.
  5. 생각해보니 그냥 카운트해주는 것만 추가해놓고 i가 j보다 작을 경우에만 조건문으로 하여 break를 걸어야 겠다고 판단함

작성한 코드

import java.util.*;

class Solution {
    public int[] solution(int[] prices) {
        // prices 주식가격이 담긴 배열
        int[] answer = new int[prices.length]; // 가격의 기간을 담을 배열
        int count=0;
        for(int i=0; i<prices.length; i++){
            for(int j=i+1; j<prices.length; j++){
                count++;
                if(prices[i] > prices[j]){
                    break;
                }
            }
            answer[i] = count;
            count=0;
        }
        
        return answer;
    }
}

'Algorithm > Programmers' 카테고리의 다른 글

(Lv2) 더 맵게  (0) 2021.03.09
(Lv2) 가장 큰 수  (0) 2021.03.08
완주하지 못한 선수(Lv1)  (0) 2021.01.19
두 개 뽑아서 더하기(Lv1)  (0) 2021.01.19