-
[프로그래머스 / Python] 올바른 괄호 | 초코더알고리즘/프로그래머스 2020. 8. 18. 15:52
def solution(s): stack=[] #s문자열의 원소들을 검사해봄 for string in s: #stack이 비어있을 때 / 여는괄호가나오면추가, 닫는괄호가나오면 False if len(stack)==0: if string=='(': stack.append(string) else: return False #stack이 비어있지않을때 / 여는괄호가나오면추가, 닫는괄호가 나오면 pop elif string=='(': stack.append(string) elif string==')': stack.pop() #검사가 끝난후 stack이 비어있는면 짝이 잘맞는것 if len(stack)==0: return True return False
https://programmers.co.kr/learn/courses/30/lessons/12909
문제
괄호가 바르게 짝지어졌는지 검사하는 문제
stack을 이용해서 푸는 기본적이고 대표적인 괄호 문제입니다.
접근법
빈 리스트 stack에 문자열을 넣어가며 비교해줌
1. stack리스트가 비어있을경우
1-1. 여는괄호를 만나면 stack에 그대로 추가.
1-2. 닫는괄호를 만나면 짝이 맞지 않는 것이므로 False 출력.
2. stack리스트가 비어있지 않을경우
1-1. 여는괄호를 만나면 stack에 그대로 추가.
1-2. 닫는괄호를 만나면 stack에 들어있는 원소 pop().
3. 비교가 끝난후에 stack이 비어있으면 짝이 바르게 이루어 졌으므로 True,
그렇지않으면 False 출력
전체코드
def solution(s): stack=[] #s문자열의 원소들을 검사해봄 for string in s: #stack이 비어있을 때 / 여는괄호가나오면추가, 닫는괄호가나오면 False if len(stack)==0: if string=='(': stack.append(string) else: return False #stack이 비어있지않을때 / 여는괄호가나오면추가, 닫는괄호가 나오면 pop elif string=='(': stack.append(string) elif string==')': stack.pop() #검사가 끝난후 stack이 비어있는면 짝이 잘맞는것 if len(stack)==0: return True return False
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Python] 기능개발 | 초코더 (0) 2020.08.18 [프로그래머스 / Python] 주식가격 | 초코더 (0) 2020.08.18 [프로그래머스 / Python] 시저 암호 | 초코더 (1) 2020.01.19 [프로그래머스 / Python] 가장 큰 수 | 초코더 (0) 2020.01.09 [프로그래머스 / Python] H-Index | 초코더 (0) 2020.01.09