Muscardinus
[프로그래머스] 올바른 괄호 (Lv2) 본문
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
'알고리즘 문제 > [프로그래머스] Lv2' 카테고리의 다른 글
[프로그래머스] 숫자의 표현 (Lv2) (0) | 2020.07.14 |
---|---|
[프로그래머스] 가장 큰 정사각형 찾기 (Lv2) (0) | 2020.07.13 |
[프로그래머스] 땅따먹기 (Lv2) (0) | 2020.07.12 |
[프로그래머스] 튜플 (Lv2) (0) | 2020.07.12 |
[프로그래머스] 라면공장 (Lv2) (0) | 2020.07.11 |
Comments