코딩테스트

[JS] 올바른 괄호

미안하다 강림이 좀 늦었다 2023. 11. 10. 17:30

 

 

난이도: Lv.2

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

 

프로그래머스

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

programmers.co.kr

 

 

알고리즘

결과가 true이려면 두가지 조건이 필요하다.

1. 문자열을 순회하는 중에 닫는 괄호의 개수가 여는 괄호의 개수보다 많으면 안된다.

2. 문자열을 끝까지 순회했을 때 여는 괄호의 개수와 닫는 괄호의 개수가 동일해야 한다.

 

 

코드

function solution(s) {
    let count = 0;

    for (let str of s) {
        str === '(' ? count++ : count--;
        if (count < 0) { return false; }
    }
    if (count !== 0) { return false; }

    return true;
}

 

 

 

주저리

처음에는 문자열을 인덱싱하고, 여는 괄호와 닫는 괄호 개수를 따로 카운팅해서 풀었는데 효율성 테스트에서 실패했다. 푸는 논리는 똑같은데 왜 이거는 효율성 박살난건지 사실 잘 모르겠고, 문제 유형이 스택/큐 이긴 했는데 이게 스택이 맞는지도 모르겠고, 그냥 머 모르겠다..............