[프로그래머스] 올바른 괄호 [연습문제] [python] Level2
문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- ()() 또는 (())() 는 올바른 괄호입니다.
- )()( 또는 (()( 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
설계 및 구현
접근 방법
스택을 이용해 '('가 나오면 스택에 쌓고 ')'가 나오면 마지막 원소 삭제 하는식으로 올바른 괄호인지 아닌지 확인이 가능하다.
이런식으로 쌓고 삭제 하다가 모든 문자를 순회했는데 스택 안에 '('가 남아 있거나 ')'가 나왔는데 스택안에 삭제할 '('가 없다면 False 올바른 괄호라면 True를 반환해주어 해결 할 수 있다.
my_solution
def solution(s):
stack = []
# 1
for i in s:
# ①
if i=="(":
stack.append(i)
# ②
else:
# ⓐ
try: stack.pop()
except: return False
# 2
if stack:
return False
return True
1. 주어진 문자열 s를 순회한다.
①. 만약 i 가 "("라면 stack에 쌓는다.
②. 아니라면
ⓐ. stack.pop()를 해준다. stack에 삭제할 원소가 없을 경우 except를 이용해 예외처리를 해준다.
2. stack에 원소가 남아 있다면 False반환 아니면 True반환하여 해결 할 수 있는 문제이다.
반응형
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 폰켓몬 [찾아라 프로그래밍 마에스터] [python] (0) | 2020.09.25 |
---|---|
[프로그래머스] 다음 큰 숫자 [연습문제] [python] (0) | 2020.09.25 |
[프로그래머스] 튜플 [2019 카카오 개발자 겨울 인턴십] [python] (0) | 2020.09.25 |
[프로그래머스] 카펫 [완전탐색] [python] (1) | 2020.09.24 |
[프로그래머스] 위장 [해시] [python] (0) | 2020.09.24 |