알고리즘
[백준] 1874번 스택 수열 _ JAVA ( 주석 설명 ) 본문
풀이
1) 1부터 차례대로 stack에 넣을 index 변수를 생성한다.
2) 입력받은 num이 index<=num 일 때까지 stack에 push("+")를 한다.
3) stack.peek() == num 이면, stack.pop()을 하고
!= 이면, 만들어질 수 없는 수열 연산이므로 "NO" 를 출력한다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //빠른 입력을 위해 버퍼를 이용해 입력을 받는다.
int N = Integer.parseInt(br.readLine()); //N까지의 수인, N 입력
Stack<Integer> stack = new Stack<>(); //1~N까지의 수를 stack 에 넣으며 필요한 연산 구하기
int index = 1; //stack에 넣을 변수, 1부터 stack에 넣는다.
StringBuilder sb = new StringBuilder(); //필요한 연산을 저장하기 위한 변수
for(int i=0;i<N;++i){
int num = Integer.parseInt(br.readLine()); //입력된 수열 숫자
while (index<=num) {
stack.push(index);
sb.append("+").append('\n');
index++;
}
if (stack.peek() == num) { //stack.peek()=='입력된 수열 숫자' 일 때 pop을 한다.
stack.pop();
sb.append("-").append('\n');
}
else { //다르면 불가능한 경우이므로, NO를 저장하고 바로 break를 한다.
sb = new StringBuilder("NO");
break;
}
}
System.out.println(sb);
}
}
'백준 - JAVA > 스택' 카테고리의 다른 글
[백준] 4949번 균형잡힌 세상 _ JAVA ( 주석 설명 ) (0) | 2023.03.15 |
---|---|
[백준] 9012번 괄호 _ JAVA ( 주석 설명 ) (0) | 2023.03.10 |
[백준] 10773번 제로 _ JAVA ( 주석 설명 ) (0) | 2023.03.10 |
[백준] 10828번 스택 _ JAVA ( 주석 설명 ) (0) | 2023.03.09 |