문제
https://school.programmers.co.kr/learn/courses/30/lessons/154539
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
아이디어
stack 에 자신보다 큰 수만 남겨두기
코드
import java.io.*;
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int[numbers.length];
Arrays.fill(answer, -1);
Stack<Integer> stack = new Stack<>();
// 오른쪽 -> 왼쪽 : 자기보다 큰 숫자들만 남겨놓기
for(int i = numbers.length - 1; i >=0 ; i--) {
while(!stack.isEmpty() && stack.peek() <= numbers[i]) {
stack.pop();
}
if(!stack.isEmpty()) {
answer[i] = stack.peek();
}
stack.add(numbers[i]);
}
return answer;
}
}
'Java' 카테고리의 다른 글
[백준] 2098 : 외판원 순회 (0) | 2025.04.06 |
---|---|
[프로그래머스] 후보키 (0) | 2025.04.03 |
[백준] 17472 : 다리 만들기 2 (0) | 2025.04.01 |
[백준] 14890 : 경사로 (0) | 2025.04.01 |
[프로그래머스] 연속 펄스 부분 수열의 합 (0) | 2025.04.01 |