Algorithm/백준 문제풀이
백준 1874 - 스택 수열(자바 구현)
leedg36
2021. 9. 17. 00:29
반응형
public class Q_1874 {
public static void main(String[] args) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringBuilder stringBuilder = new StringBuilder();
Stack<Integer> stack = new Stack<>();
int top = 0; //스택이 들어간 마지막
try {
String sequenceLength = bufferedReader.readLine();
for(int i = 0; i < Integer.parseInt(sequenceLength); i++) {
String number = bufferedReader.readLine(); //스택에 추가되어야 하는 수
if(Integer.parseInt(number) > top) { //추가되어야 하는 수가 스택의 마지막 보다 큰 경우
while(Integer.parseInt(number) > top) {
stack.push(++top);
stringBuilder.append("+");
stringBuilder.append(System.lineSeparator());
}
stack.pop();
stringBuilder.append("-");
stringBuilder.append(System.lineSeparator());
}else { //추가되어야 하는 수가 스택의 마지막 보다 작은 경우
if(!stack.isEmpty()) {
Integer pop = stack.pop();
if(Integer.parseInt(number) == pop) {
stringBuilder.append("-");
stringBuilder.append(System.lineSeparator());
}else {
stringBuilder.setLength(0);
stringBuilder.append("NO");
break;
}
}
}
}
System.out.println(stringBuilder);
} catch (IOException e) {
e.printStackTrace();
}
}
}
반응형