Algorithm/Java
[백준/JAVA] 스택 수열
dbfl9911
2024. 10. 19. 15:42
반응형
https://www.acmicpc.net/problem/1874
- 정답 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
// => 예제 입력으로 나온 값들은 스택에서 pop()된 순서대로 나타남
// stack result(예제 입력)
// {1}+
// {1,2}+
// {1,2,3}+
// {1,2,3,4}+ {4}
// {1,2,3}-
// {1,2}- {4,3}
// {1,2,5}+
// {1,2,5,6}+
// {1,2,5}- {4,3,6}
// {1,2,5,7}+
// {1,2,5,7,8}+
// {1,2,5,7}- {4,3,6,8}
// {1,2,5}- {4,3,6,8,7}
// {1,2}- {4,3,6,8,7,5}
// {1}- {4,3,6,8,7,5,2}
// {}- {4,3,6,8,7,5,2,1}
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // 8
Stack<Integer> st = new Stack<>();
StringBuilder sb = new StringBuilder();
int start = 0;
for(int i = 0; i < N; i++) {
int a = Integer.parseInt(br.readLine()); // 4
if(a > start) { // 이전 예제 입력 값과 비교
for(int j = start + 1; j <= a; j++) {
st.push(j); // {1,2,3,4}
sb.append("+").append("\n");
}
start = a;
}
// top에 있는 원소가 입력받은 값과 같이 않은 경우
if(st.peek() != a) {
System.out.println("NO");
return;
}
st.pop(); // {1,2,3} 4(x)
sb.append("-").append("\n");
}
System.out.println(sb);
}
}
반응형