주식가격
문제정의
자신의 주가가 언제 적자가 나는지 계산하는 문제이다. 예를 들면 문제에서 가격이 4일 때 주식을 사면 4초동안 주가가 떨어지지 않으므로 4이다. 필자는 처음에 문제를 잘못 이해하여 하나 빼고 다 틀렸다. 질문하기를 보니 다른 사람도 똑같이 그런 것 같았다. 지문의 개선이 필요해보인다.
문제풀이
전체 코드는 다음과 같다. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28import java.util.*;
public class StockPrice {
//프로그래머스 문제풀이 level2 주식가격
public static void main(String[] args)
{
int[] prices = {1, 2, 3, 2, 3};
int[] answer = new int[prices.length];
int n = prices.length;
for(int i = 0; i < n-1; i++)
{
for(int j = i+1; j < n; j++)
{
if(prices[i] > prices[j])
{
answer[i] = j-i;
break;
}
}
if(answer[i] == 0)
answer[i] = prices.length-(i+1);
}
}
}
이 문제의 시간복잡도는 \(O(n^2)\)이다.
테스트
이걸 스택 큐로 분류해 놓은 이유를 잘 모르겠다. 스택/큐를 이용하면 더 빠른 시간안에 풀 수 있는것일까?