ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (Java) Programmers 올바른 괄호
    Algorithm 2023. 12. 1. 12:16
    728x90
    반응형

     

    - 목차

     

    문제 소개.

     

    https://school.programmers.co.kr/learn/courses/30/lessons/12909

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     

     

     

     

     

    문제 풀이.

    문자열 s 의 괄호 패턴을 추적하기 위해서 스택을 사용합니다.

    스택에는 "(" 문자열이 추가될 수 있구요.

    "(" 이 스택에 존재하는 상황에서 ")" 문자를 만나게 되면, 스택를 Pop 합니다.

    이런 식으로 문자열을 순회하게 되면,

    올바른 문자열 s 인 경우에는 스택이 비어있게 되고,

    올바르지 않은 문자열 s 의 경우에는 스택에 괄호 문자들이 남아있게 됩니다.

     

    < 문제 풀이 >

    import java.util.*;
    
    class Solution {
        boolean solution(String s) {
            
            // 스택에는 ( 만을 추가할 수 있습니다. 
            Stack<String> stack = new Stack();
            int stackMaxCounter = 0;
            for (int i = 0; i < s.length(); i++) {
                
                String part = s.substring(i, i + 1);
                
                // ( 인 경우에 stack 에 push 합니다.
                if (part.equals("(")) {
                    stack.push(part);
                    stackMaxCounter++;
                    continue;
                } 
                
                // 만약 어떠한 ( 없이 ) 가 있다면 해당하는 문자열은 잘못된 조합의 괄호입니다.
                if (part.equals(")") && stack.isEmpty()) {
                    return false;
                    
                }
                
                // ) 인 경우에 stack 에서 pop 합니다.
                if (part.equals(")") && !stack.isEmpty()) {
                    stack.pop();
                    continue;
                }
            }
            
            return stack.isEmpty() && stackMaxCounter > 0;
        }
    }

     

    반응형
Designed by Tistory.