본문 바로가기
CS/Algorithm

[알고리즘] 9012 괄호

by 별토끼. 2018. 3. 8.
반응형

[알고리즘] 9012 괄호

 

 

https://www.acmicpc.net/problem/9012

 

  • ( 가 나오면 스택에 (를 넣는다
  • ) 가 나올 경우 
    1. 스택에 (가 있을 경우 pop으로 뺀다.
    2. 스택에 (가 없을 경우 break로 for문을 멈춘다.
 
 
  • 구현 코드
package algorithm_basic;
 
import java.util.Scanner;
import java.util.Stack;
 
public class q_9012 {
 
    public static void main(String[] args) {
        
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        scan.nextLine();
        String[] line=new String[num];
        for(int i=0;i<num;i++) {
            line[i]=scan.nextLine();
        }
        
        // num 회 회전
        for(int i=0;i<num;i++) {
            
            // 1. i번째 String의 길이만큼 회전
            // 2. 회전이 끝나면 YES
            // 3. ( 일 경우, push
            // 4. ) 일 경우, stack이 null 아닐 경우 - pop
            // 4. )이면서 Stack이 null 일 경우, NO
            // 5. 
            Stack<String> stack = new Stack<>();
            for(int j=0;j<line[i].length();j++) {
                
                char letter=line[i].charAt(j);
                String letterString=String.valueOf(letter);
                        if (letterString.equals("(")) {
                            stack.push(letterString);
                        }else if(letterString.equals(")")){
                            if(stack.empty()) {
                                System.out.println("NO");
                                break;
                            }else {
                                stack.pop();
                            }
                        }
                if(j==line[i].length()-1  && stack.empty()) {
                    System.out.println("YES");
                }else if(j==line[i].length()-1 && !stack.empty()){
                    System.out.println("NO");
                }
 
            }
 
        }
    }
 
}
 
 
 
[Review]
  • 알고리즘 구현시 stack을 사용하지만 cnt함수로 더욱 간단히 구현할 수 있다.
  • Main에서는 return값만 가져오게 하면 더욱 깔끔한 코드가 될 것이다.

 

반응형

'CS > Algorithm' 카테고리의 다른 글

[알고리즘] 1406 에디터  (0) 2018.03.10
[알고리즘] 10799 쇠막대기  (0) 2018.03.08
[BFS] 백준 2606 바이러스  (0) 2018.01.14
[알고리즘] for문 이용하기2  (0) 2017.10.21
[알고리즘] for문 사용해보기  (0) 2017.10.20

댓글