본문 바로가기
Java/알고리즘

올바른괄호

by 티코딩 2024. 2. 14.

저번엔 스택을 사용하지않고 풀었다. 이번엔 스택을 이용해 풀었다.

풀이과정을 설명해보자면

1) Character를 담는 Stack을 하나 초기화해준다.

2) String s 를 하나씩 char로 배열을 만들어서 반복한다.

3) 맨처음 '('가 들어오면 stack에 넣는다. 만약 맨처음  ')'가들어가게되면 false return

4) 만약 stack에 '('가 들어가있다치자, '('가 들어가면 그대로 넣게되고, ')'가 들어가면 들어가있던 '('를 뺀다.

5) 반복문을 다 돌고나서 ')'가 남아있으면 false이니, stack.isEmpty를 해준다.

**그냥 마지막에 return true 했더니 틀렸다. "(()(" 일때, return true해버리면 true를 반환해서 실패한다. 그래서 마지막에 stack.isEmpty()를 해줘야한다. 올바른 괄호라면 결국엔 전부 비어있어야하기 때문이다.

 

 public static boolean solution(String s) {
        Stack<Character> stack = new Stack<>();
        for(char c : s.toCharArray()){
            if(c == '('){
                stack.push(c);
            }else if(stack.empty()){
                return false;
            }else{
                stack.pop();
            }
        }
        return stack.isEmpty();
    }

 

'Java > 알고리즘' 카테고리의 다른 글

방문길이  (1) 2024.03.22
이진 변환 반복하기  (0) 2024.02.20
최솟값만들기  (0) 2024.02.13
JadenCase 문자열  (1) 2024.02.08
다시 lv2로  (0) 2024.02.07