728x90
반응형
올바른 괄호
문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서
')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른
괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return
하는 solution 함수를 완성해 주세요.
제한 조건
🐣문자열 s의 길이 : 100,000 이하의 자연수
🐣문자열 s는 '(' 또는
')' 로만 이루어져 있습니다.
입출력 예시
s | answer |
---|---|
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
🐣내가 한 풀이
2단계부터는 효율성도 검사하더군요... 세상살기 팍팍하군...
우선 for()문 통해서 s에서 '('일때 cont에 1을 더해줍니다. 그리고 cont가
음수일때 false를 리턴하도록 합니다.
마지막으로 삼항연산자를 활용하여 cont가 0과 완전히 일치하면 true를
반환하도록 합니다.
const s = "()()";
function solution(s){
let cont = 0;
for(let i = 0; i < s.length; i++){
//'('일때 cont에 +1, 아닐때 -1
cont += s[i] == '(' ? 1 : -1;
if(cont < 0) return false;
}
return cont === 0 ? true : false;
}
🐣다른 풀이
대부분 for문을 통해서 많이 해결하셨던데 정규식을 활용하여 해결하신 분도 있더군요. 정규식은 match를 활용하여 좀더 간단하게 하셨네요.
function is_pair(s){
var result = s.match(/(\(|\))/g);
return result[0] == '(' && result.length % 2 == 0 ? true : false
}
'알고리즘 공부' 카테고리의 다른 글
프로그래머스 2단계 - 최댓값과 최솟값 (6) | 2022.12.08 |
---|---|
프로그래머스 2단계 - JadenCase 문자열 만들기 (3) | 2022.12.07 |
프로그래머스 1단계 - 폰켓몬 (1) | 2022.12.06 |
프로그래머스 1단계 - 숫자 문자열과 영단어 (1) | 2022.12.04 |
프로그래머스 1단계 - 최소직사각형 (1) | 2022.12.04 |
댓글