프로그래밍 공부
작성일
2024. 1. 30. 20:59
작성자
WDmil
728x90

문제 설명

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

"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.


제한사항


문자열 s의 길이 : 100,000 이하의 자연수
문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.


입출력 예

s answer
"()()" true
"(())()" true
")()(" false
"(()(" false

 


문제 풀이

 

문제가 매우 쉽다.

큐 형태로 데이터를 풀어도 되고, string 자체가 벡터 형태를 띄고 있음으로 그대로 이용해도 무방ㅎ다ㅏ.

 

그냥, string def형을 한개 만들어두고, 아무 문자로 초기화 시켜준 다음에 (가 들어오면 임의의 문자를 삽입

) 가 들어오면def가 비어있지 않았을 때 들어있는 문자를 pop해주고

 

return에 남아있는 값이 0인지 아닌지 확인만 해주면 된다.


첫 시도

#include<string>
#include <iostream>

using namespace std;

bool solution(string s)
{
    string an = "0";
    for(const char& def : s)
    {
        if(def == '(')
            an += '(';
        else if(!an.empty())
            an.pop_back();
    }
    return an == "0" ? true : false;
}

성공

그냥 전부다 순환하면서 임의의 문자를 넣고, 있다면 true아니라면 false를 해주면 된다.

728x90

'코딩테스트 문제 풀이 > 스텍&큐' 카테고리의 다른 글

다리를 지나는 트럭  (0) 2024.02.14
프로세스  (0) 2024.02.08
기능개발  (0) 2024.01.19
더 맵게  (0) 2024.01.11
같은 숫자는 싫어  (0) 2024.01.11