코딩 테스트/프로그래머스
[Python] 프로그래머스 lv.2 올바른 괄호
위시리
2024. 10. 15. 21:43
알고리즘 고득점 kit - 스택/큐 - lv 2
문제 분석
- 올바른 괄호 '('로 열렸으면 ')'로 닫혀야 한다.
- 올바른 괄호면 true
- 올바르지 않으면 false return
코드 설계
- 문자열을 한글자씩 입력
- 만약 '('가 있다면 stack.append
- ')'가 있다면
- 만약 stack이 비어있지 않고 [-1] == '('라면 pop
- else stack.append
- 문자열을 다 훑었는데 stack이 비어있다면 true
- 비어있지 않다면 false
정답 코드
def solution(s):
answer = True
stack = []
for i in s :
if i == '(' :
stack.append(i)
elif i == ')' :
if len(stack) != 0 and stack[-1] == '(' :
stack.pop()
else :
stack.append(i)
if len(stack) != 0 :
answer = False
return answer
2회차 - 2024.11.26
def solution(s):
answer = True
stack = []
for i in s :
if i == "(" :
stack.append(i)
else :
if stack :
if stack[-1] == "(" :
stack.pop()
else :
stack.append(i)
else :
stack.append(i)
if stack :
return False
return True
3회차 - 2025.03.27
해설 코드
def solution(s):
answer = True
stk = []
for i in s:
if i == '(': # 열면 넣고
stk.append('(')
else:
if stk: # 비어 있는 리스트면 False
stk.pop() # 있으면 하나 삭제
else: #없으면
return False
return stk == []
내코드
def solution(s):
answer = True
stack = []
for g in s :
if g == "(" :
stack.append("(")
else :
if len(stack)>0 and stack[-1] == "(" :
stack.pop()
else :
stack.append(g)
if len(stack) > 0 :
answer = False
return answer