문제를 처음 보고 설명이 이게 단가? 했다. 뭔소린가했더니 첫1초 가격 1일때, 나머지 네번중에 1보다 작은가격은 없으니 떨어지지 않은것이므로 4, 2초일때 가격 2도 마찬가지로 나머지 세번중에 작은가격이 없으니 3 이런식이다. 그래서 스택으로 풀려다 큐로도 풀수 있을거같아서 큐로 풀었다.
ㅇ 1트
public static int[] solution(int[] prices) {
int[] answer = {prices.length};
Queue<Integer> priceQueue = new LinkedList<>();
for(int price : prices){
priceQueue.add(price);
}
int num = 0;
//peek == 맨앞에있는거 반환
//poll == 맨앞에있는거 반환하고 삭제
while(priceQueue.peek() != null){
int value = priceQueue.poll();
answer[num] = 0;
for(int price : priceQueue){
answer[num]++;
if(value > price){
break;
}
}
num++;
}
return answer;
}
분명 내 머리속으로 해봐도 맞고, 노트에 풀어봤을때도 이게 맞는데 ArraysIndexOutOfBounds 예외가 나오길래 뭐가 잘못된거지 한참을 보다가
answer의 길이를 초기화해야하는데, answer에다가 값을 넣어버린것이다...
진짜 너무 허무했다.
ㅇ 2트
public static int[] solution(int[] prices) {
int[] answer = new int[prices.length];
Queue<Integer> priceQueue = new LinkedList<>();
for(int price : prices){
priceQueue.add(price);
}
int num = 0;
//peek == 맨앞에있는거 반환
//poll == 맨앞에있는거 반환하고 삭제
while(priceQueue.peek() != null){
int value = priceQueue.poll();
answer[num] = 0;
for(int price : priceQueue){
answer[num]++;
if(value > price){
break;
}
}
num++;
}
return answer;
}
이렇게 하니깐 잘 됐다ㅋㅋㅋㅋ
진짜...오래간만에 풀었더니 배열 길이 초기화도 까먹은건가? 반성하자...
'Java > 알고리즘' 카테고리의 다른 글
정수 내림차순으로 배치하기 (1) | 2024.01.04 |
---|---|
뒤에 있는 큰 수 찾기 (0) | 2023.11.22 |
주차 요금 계산 (0) | 2023.11.08 |
더맵게(Priority Queue, Min Heap) (0) | 2023.11.02 |
모음사전 (0) | 2023.11.01 |