-
[백준] 1874 스택 수열 #JAVAAlgorithm Solving/BAEKJOON 2021. 1. 30. 17:30
BAEKJOON [1874] 스택 수열
코드
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)); // BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringBuilder sb = new StringBuilder(); int n = Integer.parseInt(br.readLine()); Stack<Integer> stack = new Stack<>(); int target; int number = 1; boolean fail = false; for (int i=0; i<n ; i++) { target = Integer.parseInt(br.readLine()); while (true) { //1.stack 최상단 확인 if(!stack.isEmpty() && stack.peek() == target) { stack.pop(); sb.append("-\n"); break; } //2. 넣지 않은 수 number 확인 if(target >= number) { stack.push(number); sb.append("+\n"); number++; continue; //while 계속 진행 } //3. 찾는 수가 스택 안쪽으로 들어가버린 경우 if(target < number) { fail = true; break; } } if(fail) break; //fail 플래그가 true 가되면 for문을 멈춘다. } //결과 출력 if(fail) { System.out.println("NO"); }else { System.out.println(sb.toString()); } } }
풀이
- stack 사용
- 주석 참고
잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)
'Algorithm Solving > BAEKJOON' 카테고리의 다른 글
[백준] 6198 옥상 정원 꾸미기 #JAVA (0) 2021.01.31 [백준] 2493 탑 #JAVA (0) 2021.01.30 [백준] 1158 요세푸스 #JAVA (0) 2021.01.29 [해커랭크] 2D Array - DS #JAVA (0) 2021.01.27 [백준] 1406 에디터 #JAVA (0) 2021.01.24