Coding Test/자료구조

[프로그래머스 / Java] Lv.2 올바른 괄호

annovation 2025. 5. 3. 09:35

Question

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


Code

import java.util.*;

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

        Stack<Character> stack = new Stack<>();
        
        for (char item : s.toCharArray()) {
            if (item == '(') {
                stack.push('(');
            } else {
                if (!stack.isEmpty()) {
                    stack.pop();
                } else {
                    return false;
                }
            }
        }

        return stack.isEmpty() ? true : false;
    }
}
  • toCharArray() [각주:1] 
    • 문자열을 문자(char) 배열로 변환
    • 💡 괄호 문자열 s를 하나하나 char 타입으로 순회하면서 '('이면 스택에 넣고, ')'이면 스택에서 제거하는 방식으로 올바른 괄호인지 판단
    • ❓toCharArray() 없이 charAt()으로 쓴다면? 똑같이 동작하지만, 반복문 내에서 매번 charAt(i)를 호출하는 것은 약간의 오버헤드가 있을 수 있다.
for (int i = 0; i < s.length(); i++) {
    char item = s.charAt(i);
    ...
}

출처

https://hy-ung.tistory.com/100

 

프로그래머스 - 올바른 괄호(JAVA)

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

hy-ung.tistory.com

반응형