ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준] 1874 스택 수열 #JAVA
    Algorithm 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

    댓글