알고리즘/백준
[Java] BOJ 17298번 오큰수
컴공맨
2021. 8. 12. 20:11
17298번: 오큰수
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.
www.acmicpc.net
풀이
스택을 사용하여 해결했습니다.
코드
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);
}
}
GitHub - pyo7410/Algorithm: 1일 1커밋을 목표로!
1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.
github.com