728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12909
코드
def solution(s):
cnt = 0
for i in s:
if i == "(":
cnt +=1
elif i == ")":
if cnt < 1:
return False
cnt -=1
if cnt == 0:
return True
else:
return False
다른 사람 코드
def is_pair(s):
st = list()
for c in s:
if c == '(':
st.append(c)
if c == ')':
try:
st.pop()
except IndexError:
return False
return len(st) == 0
def is_pair(s):
wt = 0
for c in s :
if c == '(' : wt += 1
elif c == ')' : wt -= 1
if wt < 0 : return False
return wt == 0
접근법
스택 자료구조를 활용하는 문제로 괄호의 짝을 확인하는 방식으로 해결할 수 있습니다. 스택은 마지막에 열린 괄호가 처음으로 닫힌다는 Last In, First Out (LIFO) 원리를 사용합니다.
다른 사람 코드의 1 이 스택을 이용한 원리를 잘 사용한 코드입니다.
def solution(s):
stack = [] # 스택을 사용할 리스트 생성
for bracket in s:
if bracket == "(":
stack.append(bracket) # 여는 괄호일 경우 스택에 추가
else:
if not stack: # 스택이 비어있으면서 닫는 괄호가 나오면 올바르지 않은 괄호이므로 False 반환
return False
stack.pop() # 스택에서 여는 괄호 제거
return not stack # 스택이 비어있으면 올바른 괄호, 비어있지 않으면 올바르지 않은 괄호
좀 더 활용한 코드입니다.
배운 점
'자료구조&알고리즘 > 프로그래머스' 카테고리의 다른 글
[Python] 디스크 컨트롤러 / 힙 (1) | 2024.02.10 |
---|---|
[Python] 더 맵게 - 힙 (1) | 2024.02.10 |
[Python] 프로세스 - 스택/큐 (0) | 2024.02.07 |
[Python] 기능개발 - 스택/큐 (1) | 2024.02.06 |
[Python] 해시 - 폰켓몬 (0) | 2024.02.05 |