개발자일지/코딩테스트

올바른 괄호

어쩌다한번 2022. 6. 20. 21:54

올바른 괄호


문제


풀이

import java.util.Stack;

class Solution {
    boolean solution(String s) {
        boolean answer = true;

        char[] chars = s.toCharArray();
        
        Stack<Character> stack = new Stack<>();

        for (char aChar : chars) {
            if (aChar=='('){
                stack.add(aChar);
            }else{
                if(stack.size()==0) return false;
                stack.pop();
            }
        }
        if (stack.size()!=0) return false;

        return answer;
        }
}

해설

풀이는 굉장히 간단하다
여는 괄호 '('가 나오면 stack에 넣고
닫는 괄호 ')'가 나오면 stack에서 pop한다

닫는 괄호 ) 가 나왔는데 stack에 저장된 여는 괄호가 없으면
여는 괄호가 부족하다는 뜻이니 false

과정을 모두 마쳤는데 stack이 비어있지 않으면
닫는 괄호가 부족하다는 뜻이니 false
 
모든 과정을 마치고 stack도 비어있다면 true다.
 

후기

보자말자 전에 책(누구나 자료구조와 알고리즘)에서 봤던 문제라는것을 기억했다.

알고리즘을 공부하면서 처음으로 재밌다고 느꼈던 문제였다

책에있는 예제가 오히려 더 복잡했기에 정말 빠르게 풀 수 있었다.

그렇게 나는 점점 알고리즘을 잘 알게될 줄 알았다

 


 

그러나 이후로 알고리즘이 재밌다고 느낀적이 없었다.

 

DFS와의 사투에서 모든 힘을 쏟아낸 나는

 

이어지는 골드문제들에서 거짓말처럼 참패를 당했다.

 

'개발자일지 > 코딩테스트' 카테고리의 다른 글

백준 1475 - 방 번호  (0) 2022.05.24
백준 - 1783 병든나이트  (0) 2022.05.18
백준 1427번 - 소트인사이드  (0) 2022.05.02
백준 - 2908 상수  (0) 2022.04.27
백준 - 1110 더하기 싸이클  (0) 2022.04.26