PS/스택, 큐

프로그래머스 [C++] 올바른 괄호

asdsa112 2026. 5. 10. 23:28

<조건 분석>

 

1. 프로그래머스는 제한 시간 이런게 없어서 조건 생각하기가 어렵다고 생각함.

 

2. 문자열 갯수가 10만 이하라 그냥 순회만 하면서 체크해도 충~~~분할 것 이라 생각했음.

 

3. 벡터를 추가해서 push_back() 연산이나 pop_back() 연산을 추가하니 시간초과가 생겼음. 

 

4. 그만큼 빡빡하다는 거였음.

 

<문제 해결 포인트>

 

1. 최대한 string을 한번만 순회하되, 새로운 STL 컨테이너를 추가해서 함수 호출 연산을 추가하면 시간초과가 일어남.

 

2. 여는 괄호를 +1로, 닫는 괄호를 -1로 count 체크를 진행하면 됨.

 

3. 중간에 음수가 발생하면 닫는 괄호가 많아졌다는 뜻이니 false, 순회가 끝나고 count가 0이 아니면 짝이 안맞는다는 소리니 그것도 false.

 

#include <bits/stdc++.h>
using namespace std;


bool solution(string s)
{
    bool answer = true;
    
    int count = 0;
    for (auto& item : s)
    {
        if (item == '(')
        {
            count++;
        }
        else if (item == ')')
        {
            count--;
        }
        
        if (count < 0)
        {
            answer = false;
            break;
        }
    }
    
    if (count != 0) answer = false;

    return answer;
}

'PS > 스택, 큐' 카테고리의 다른 글

프로그래머스 [C++] 같은 숫자는 싫어  (0) 2026.05.11
프로그래머스 [C++] 기능개발  (0) 2026.05.09