알고리즘/백준
[백준] 1874번 - 스택 수열
땀두
2022. 3. 20. 12:09


스택을 이용한 문제이다. 스택의 특성상 LIFO특성을 가지기 때문에 입력받은 숫자와 같으면 값을 출력하면서 -를 출력하고 그렇지 않으면 해당 입력값까지 스택에 저장을 한다. 이런 식으로 저장을 하며 인덱스를 올리기 때문에 인덱스보다 낮은 값이 나와 오름차순이 되지 않는 경우를 방지할 수 있다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class p1874 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int a = Integer.parseInt(br.readLine());
int start = 0;
Stack<Integer> st = new Stack<>();
for (int i = 0; i < a; i++) {
int n = Integer.parseInt(br.readLine());
if (start < n) {
for (int j = start+1; j <= n; j++) {
sb.append("+\n");
st.push(j);
}
start = n;
} else if (st.peek() != n) {
System.out.println("NO");
return;
}
sb.append("-\n");
st.pop();
}
System.out.println(sb);
}
}