반응형
🔺 문제
🔺 코드
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
|
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int[numbers.length];
Stack<Integer> s = new Stack<>();
for(int i = numbers.length - 1; i >= 0; i--){
while(!s.isEmpty()){
if(s.peek() > numbers[i]){ // 뒤가 더 클 때
answer[i] = s.peek();
break;
}
else{
s.pop();
}
}
if(s.isEmpty()){
answer[i] = -1;
}
s.push(numbers[i]);
}
return answer;
}
}
|
cs |
🧩 해결 아이디어
• 스택
- 스택에 들어가는 건 값이 아닌 인덱스
🔺 다른 풀이들
- 내가 참고한 풀이는 뒤쪽 원소부터 비교하면서 스택에 넣는 건데, 이 풀이는 앞부터 진행했다.
💬 느낀 점
처음에 브루트포스 2중 for문 써서 풀어봤는데 마지막 20번 TC부터 틀렸당...
아무래도 데이터 크기가 크다 보니..
틀린 코드
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
|
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int[numbers.length];
List<Integer> list = new ArrayList<>();
for(int i = 0 ; i < numbers.length ; i++) {
boolean exists = false;
for(int j = i + 1 ; j < numbers.length ; j++) {
if(numbers[j] > numbers[i]) {
list.add(numbers[j]);
exists = true;
break;
}
}
if(!exists) list.add(-1);
}
for(int i = 0 ; i < list.size() ; i++) {
answer[i] = list.get(i);
}
return answer;
}
}
|
cs |
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv. 2] 예상 대진표 (JAVA) (0) | 2023.09.25 |
---|---|
[프로그래머스/Lv. 0] 5명씩 (JAVA) (0) | 2023.09.24 |
[프로그래머스/Lv.2] 할인 행사 (JAVA) (0) | 2023.09.22 |
[프로그래머스/Lv. 2] 모음사전 (JAVA) (0) | 2023.09.18 |
[프로그래머스/Lv. 2] 이모티콘 할인행사 (JAVA) (0) | 2023.09.14 |