문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- ()() 또는 (())()는 올바른 괄호입니다.
- )()( 또는 (()( 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입/출력
코드
def solution(s):
from collections import deque
answer = True
deque = deque()
for str in s:
if str == '(':
deque.append(str)
else:
if len(deque) == 0 or deque.pop() == ')':
return False
if len(deque) != 0:
return False
def solution(s):
li = list()
for i in s:
if i == '(':
li.append(i)
if i == ')':
try:
li.pop()
except IndexError:
return False
return len(li) == 0
function solution(s){
var answer = true;
let sum = 0
for(let i = 0; i<s.length; i++){
s[i] ==='(' ? sum++ : sum--
if(sum < 0) break
}
return sum === 0;
}
코드 해석
전체적인 코드는 비슷한 부분이 많기 때문에 하나의 코드만 풀이해보자.
1. 제일 먼저 '('를 만나면 deque 나 배열에 append를 한다.
2. 만약 배열의 크기가 0 또는 pop을 하는 것이 ')' 라면 False를 반환한다.
3. 마지막으로 배열의 크기가 0이 아니라면 False를 반환한다.
'Algorithm' 카테고리의 다른 글
[BOJ/백준] 1065번 한수 (0) | 2021.01.26 |
---|---|
[BOJ/백준] 4673번 셀프 넘버 (0) | 2021.01.26 |
[BOJ/백준] 1874번 스택 수열 (0) | 2021.01.25 |
[BOJ/백준] 4949번 균형잡힌 세상 (0) | 2021.01.25 |
[프로그래머스] 카펫 (0) | 2021.01.22 |