ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오

[프로그래머스] 올바른 괄호

SZCODE 2021. 3. 19. 13:59

programmers.co.kr/learn/courses/30/lessons/12909

 

코딩테스트 연습 - 올바른 괄호

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은

programmers.co.kr

문제 설명 :

올바른 괄호이면 true , 아니면 false 출력

 

문제 풀이 : 

String s 길이만큼 반복문을 돌면서 열린괄호면 스택에 push 닫힌 괄호면 pop 합니다.

하지만 이렇게만 했을 때 ())) 이러한 경우도 true가 될 수 있기 때문에, 스택이 비어있을 때 닫힌 괄호가 들어온다면 push 해주어야합니다.

import java.util.Stack;

class Solution {
    static boolean solution(String s) {
        boolean answer = true;
        Stack<Character> stack = new Stack();
        
        int i = 0;
        while(i<s.length()) {
        	char c = s.charAt(i++);
        	
        	if(c==')') {
        		if(!stack.isEmpty()) stack.pop();
        		else stack.push(c);
        	}
        	if(c=='(') stack.push(c);
        }
        
        if(stack.isEmpty()) answer = true;
        else answer = false;
        
        
        System.out.println(answer);
        return answer;
    }
}