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
28
29
|
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
Queue<Integer> q = new LinkedList<Integer>();
for(int p : prices ) {
q.offer(p);
}
for (int i = 0; i < prices.length; i++) {
int count = 0;
int stock = q.poll();
for (int j=i+1; j < prices.length; j++) {
if(stock <= prices[j] ) {
count++;
}else{
count++;
break;
}
}
answer[i] = count;
}
return answer;
}
}
|
cs |
솔직히 반복문만으로도 충분이 풀이가 가능하다.
그냥 큐를 한번 써보고 싶어서 이렇게 해본다.
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
28
29
30
31
32
33
34
35
|
package test;
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
Stack<Integer> beginIndex = new Stack<>();
int i =0;
int[] terms = new int[prices.length];
beginIndex.push(i); //인덱스의 스택
for(i = 1; i<prices.length;i++) {
//스택이 비어있지 않을때 && 다음 인덱스보다 현 인덱스가 더 클때
while(!beginIndex.empty() && prices[i] < prices[beginIndex.peek()]) {
//int index = 0
int index =beginIndex.pop();
//terms[0] = 1 - 0
terms[index] = i-index;
}
//beginIndex.push(1);
//바로 다음의 인덱스를 스택에 삽입
//그러면 위에서 pop을 해도 남아있는다.
beginIndex.push(i);
}
//스택에는 다음 인덱스가 더 작을 때의 경우만 들어있다.
while(!beginIndex.empty()){
int index = beginIndex.pop();
//작을때의 인덱스
terms[index] = i-index-1;
}
return terms;
}
}
|
cs |
다른사람이 풀은 풀이
스택을 인덱스로 사용했다.
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 신고 결과 받기(JAVA) (0) | 2022.02.18 |
---|---|
더 맵게 (0) | 2021.01.21 |
위장 (0) | 2021.01.06 |
다리를 지나가는 트럭 (0) | 2021.01.06 |
프로그래머스 lv2 - 전화번호 목록 (0) | 2021.01.04 |