최대 1 분 소요

스크린샷, 2024-05-26 21-23-37

생각 과정

해당 문제를 풀기 위해 나는 처음에 너무 어렵게 접근을 하게 되었다. (머릿속에서 정리가 잘 안되서 그런것 같다.)

그래도 차근차근 노트에 적어가며 패턴을 풀었다.
‘(‘ 문자는 count+=1; ‘)’ 문자는 count-=1;

그리고 조건이 더 있었다.

첫 시작은 ‘(‘로 시작해야 한다는 점. 그리고 전체 길이는 짝수여야 한다는 점.

그리고 count가 -1이 되면 )(( 이런식으로 모양이 안맞으니 관련 내용도 조건문으로 추가해주었다.

오늘의 회고(24.05.26)

하나씩 천천히 적어가며 풀어보자.

구현 내용

#include <iostream>
using namespace std;

bool Correct(string str){
    char A = '(', B = ')';
    int open_count = 1;

    if(str[0] == A && (str.length() % 2) == 0){
        for(int i = 1; i < str.length(); i++){
            if(str[i] == A){
                open_count++;
            }else if(str[i] == B){
                if(open_count == 0) return false;
                open_count--;
            }
        }
        if(open_count == 0){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

int main(){
    bool is_true = false;
    int N = 0;

    string s;

    cin >> N;

    for(int i = 0; i < N; i++){
        cin >> s;
        is_true = Correct(s);
        if(is_true == true){
            cout << "YES" << "\n";
        }else{
            cout << "NO" << "\n";
        }
    }
}

댓글남기기