1. 문제 링크
2. 문제 및 입출력예제
3. 문제 풀이
입력받은 값이 지금 들어간 값보다 크면 값을 스택에 넣는다.
그 후에
입력받은 값이 들어가있는 값과 같으면 스택에서 꺼낸다.
입력받은 값이 들어가있는 값보다 작으면 top에 있는 것을 꺼낸다.
push와 pop을 반복하면서 해당 수열이 나오는지 확인하면 된다.
4. 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new java.io.InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
Stack<Integer> stack = new Stack<>();
boolean flag = true;
int s = 0;
for(int i=0;i<N;i++) {
int num = Integer.parseInt(br.readLine());
while(s<num) {
stack.push(++s);
sb.append("+\n");
}
if(s == num) {
stack.pop();
sb.append("-\n");
}
else {
if(stack.peek()==num) {
stack.pop();
sb.append("-\n");
}
else {
flag = false;
break;
}
}
}
if(!flag) {
System.out.println("NO");
}
else {
System.out.println(sb);
}
}
}
'ALGORITHM' 카테고리의 다른 글
백준 17070 파이프 옮기기 1 (0) | 2023.04.24 |
---|---|
백준 10971 외판원 순회2 (Java) (0) | 2023.04.23 |
백준 1966 프린터 큐 (Java) (0) | 2023.04.22 |
백준 1463 1로 만들기 (Java) (0) | 2023.04.22 |
백준 6593 상범 빌딩 (Java) (0) | 2023.04.21 |