π°ππππππππ/π±πππππππ
[λ°±μ€/Java] μ€ν μμ΄ 1874
ν΄λ²λ
2023. 12. 13. 09:53
λ°μν
λ¬Έμ
https://www.acmicpc.net/problem/1874
1874λ²: μ€ν μμ΄
1λΆν° nκΉμ§μ μμ λν΄ μ°¨λ‘λ‘ [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] μ°μ°μ μννλ©΄ μμ΄ [4, 3, 6, 8, 7, 5, 2, 1]μ μ»μ μ μλ€.
www.acmicpc.net
νμ΄
λ¬Έμ μ΄ν΄νλλ° νμ°Έ κ±Έλ Έλ€ κ»κ»~
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
Stack<Integer> stack = new Stack<>();
int[] arr = new int[n];
int stackNum = 1;
boolean check = false;
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
for (int i = 0; i < arr.length; i++) {
int num = arr[i];
while (true) {
if (stack.empty()) {
stack.push(stackNum);
stackNum++;
sb.append("+\n");
} else if (stack.peek() != num) {
stack.push(stackNum);
stackNum++;
sb.append("+\n");
}
if (stack.peek() == num) {
sb.append("-\n");
stack.pop();
break;
}
if (stackNum > num) {
sb = new StringBuilder("NO");
check = true;
break;
}
}
if (check) {
break;
}
}
bw.write(sb.toString());
bw.flush();
bw.close();
}
}
μ λ΅
λ°μν