풀이
스택을 사용하여 해결했습니다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
public static int N;
public static int[] A, answer;
public static Stack<Integer> stk;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
N = Integer.parseInt(br.readLine());
A = new int[N];
answer = new int[N];
stk = new Stack<Integer>();
st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < N; ++i) {
A[i] = Integer.parseInt(st.nextToken());
}
stk.add(0);
for (int i = 1; i < N; ++i) {
if (stk.isEmpty()) {
stk.add(i);
}
while (!stk.isEmpty() && A[stk.peek()] < A[i]) {
answer[stk.peek()] = A[i];
stk.pop();
}
stk.add(i);
}
while (!stk.isEmpty()) {
answer[stk.pop()] = -1;
}
StringBuilder sb = new StringBuilder("");
for (int i = 0; i < N; ++i) {
sb.append(answer[i]).append(" ");
}
System.out.println(sb);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[Java] BOJ 1976번 여행 가자 (0) | 2021.08.20 |
---|---|
[Java] BOJ 15684번 사다리 조작 (0) | 2021.08.18 |
[Java] BOJ 1339번 단어 수학 (0) | 2021.08.11 |
[Java] BOJ 1967번 트리의 지름 (0) | 2021.08.09 |
[Java] BOJ 15685번 드래곤커브 (0) | 2021.08.06 |