Muscardinus

[프로그래머스] 올바른 괄호 (Lv2) 본문

알고리즘 문제/[프로그래머스] Lv2

[프로그래머스] 올바른 괄호 (Lv2)

Muscardinus 2020. 7. 13. 16:35
728x90

https://programmers.co.kr/learn/courses/30/lessons/12909?language=javascript

 

문제 설명

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

  • ()() 또는 (())() 는 올바른 괄호입니다.
  • )()( 또는 (()( 는 올바르지 않은 괄호입니다.

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

제한사항

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

입출력 예

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

입출력 예 설명

입출력 예 #1,2,3,4
문제의 예시와 같습니다.

 

C++

#include<string>
#include <iostream>
#include <stack>
using namespace std;

bool solution(string s)
{
    bool answer = true;
    stack<int> st;
    for(int i=0;i<s.size();i++){
        if(st.empty()){
            if(s[i]==')') return false;
            else {
                st.push(s[i]);
                continue;
            };
        }
        else{
            if(s[i]==')'){
                if(st.top()=='(') {
                    st.pop();
                    continue;
                }
            }
        }
        st.push(s[i]);
    }
    if(st.empty()) return true;
    else return false;
    return answer;
}

 

#include<string>
#include <iostream>

using namespace std;

bool solution(string s)
{
    bool answer = true;
    int n=0;
    for(int i=0;i<s.size();i++){
        if(n<0) return false;
        if(s[i]=='(') n++;
        else if(s[i]==')') n--;
    }
    answer=(n==0);
    return answer;
}

 

JavaScript

function solution(s){
    var answer = true;
    let n=0;
    for(let i=0;i<s.length;i++){
        if(n<0) return false;
        if(s[i]==='(') n++;
        else if(s[i]===')') n--;
    }
    answer=(n===0)
    return answer;
}
728x90
Comments