👀 문제
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다.
예를 들어
"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고,
올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
🌻 아이디어
- stack을 이용 -> '(' 일 경우만 append
- ')'인 경우 -> stack에 '(' 이 없다면 False
- stack의 요소가 모두 소진되어야 함
** 문자열 s의 길이 : 100,000 이하의 자연수 <- 하나 씩 탐색해도 ok
코드
def solution(s):
stack = []
for c in s:
if c == '(':
stack.append(c)
elif c == ')':
if stack: stack.pop()
else: return False
if stack: return False
return True
예전에 네이버 코딩테스트 기출에 나왔다고 하여 여러 번 풀어본 문제
- 짝 or 그룹을 찾아야 한다 -> 주로 stack 또는 queue
- python으로 구현하기 쉬운 것은 stack이므로 먼저 stack으로 생각해보자
'알고리즘' 카테고리의 다른 글
[SQL] sqlzoo 04 SELECT in SELECT - 2, 6, 7, 8, 9번 (subquery) (1) | 2023.04.29 |
---|---|
[python] 프로그래머스 완전탐색 - 모의고사 (0) | 2023.04.24 |
[python] 프로그래머스 정렬 - H index (0) | 2023.04.21 |
[python] 프로그래머스 정렬 - 가장 큰 수 (0) | 2023.04.20 |
[python] 프로그래머스 스택/큐 - 프린터 (0) | 2023.04.19 |