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

2023. 9. 6. 14:38
728x90

괄호가 올바르게 짝지어졌는지 확인하는 문제.. 

어제의 스택문제와는 차원이 다르게 어려웠다 ㅠㅡㅠ 

 

처음 든 생각은 문자열을 모두 스택에 넣어야하나...? 라는 바보같은 생각을 했다.

근데 그게 아니라 여는 괄호를 만나면 ? 스택에 그것을 넣는 방법이었다. 

 

1.  스택을 만든다. 제너릭은 <Character>로

2. 일단, 닫는 괄호로 시작하면 > 무조건 false가 된다. 

3. String을 char로 만들어 확인 작업 >> 여는 괄호를 만나면 스택에 넣기(push())

4. 닫는 괄호를 만났는데 스택이 비어있지 않으면(여는 괄호가 스택에 들어있다) pop() 하기.

5. 이렇게 문자열 s의 길이만큼 반복하고 마지막으로 스택이 비어있는지 확인하여 정답 출력

 

직접 코드로 짜보았다.

import java.util.*;

class Solution {
	boolean solution(String s) {
    	boolean answer = true;
        Stack<Character> stack = new Stack<>();
        
        // String s가 닫는 괄호로 시작하면 바로 false로 만들기.
        if (s.startsWith(")")) {
        	return false;
        }
        
        // String s를 char로 만들어 확인 작업하고 > 
        for (int i=0; i<s.length(); i++) {
        	char c = s.charAt(i);
            
            // 여는 괄호를 만나면 스택에 넣기.
            if (c=='(') {
            	stack.push(c);
            } else { // else면 닫는괄호 만난 것. 그때 스택이 비어있지 않으면 pop
            	if (!stack.empty()) {
                	stack.pop();
                }
            }
        }
        
        // for문을 다 돌고난 후 스택의 사이즈 확인.
        if (stack.size() > 0) {
        	answer = false;
        }   
        return answer;
    }
}

채점 결과

통과입니다.. 

다양한 방법으로 풀 수 있을 것 같네요

저는 이렇게 풀었습니다.

728x90

BELATED ARTICLES

more