CS/코딩 테스트

올바른 괄호

valleycho-tech 2025. 3. 12. 11:47

코딩테스트 문제

 

프로그래머스

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

programmers.co.kr

 

문제 접근)
'('문자로 열려있으면 짝지어서 ')' 문자로 닫혀야 하므로 스택의 ( )의 인접한 한쌍이 있으면 제거하면 됩니다.
문자열의 길이 10^5이므로 시간 복잡도 O(N^2)미만의 알고리즘으로 해결하면 됩니다.

 

정답 및 해설

function solution(s) {
    let stack = [];
    if (s[0] === ")") return false; // ')' 닫는게 먼저 시작되면 '('')' 짝지어서 스택에서 없앨수 없으므로 false
    
    for (let i = 0; i < s.length; i++) {
        if (s[i] === "(") { // '(' 여는게 오면 스택의 저장
            stack.push('(');
        } else { // ')' 닫힌게 오면 스택에서 '(' 하나 꺼내서 제거
            stack.pop();
        }
    }
    
    // stack의 길이가 0이면 짝지어서 모두 제거 됐으므로 true 아니면 false
    return stack.length === 0 ? true : false;
}