-
(코딜리티) Lesson 7. [Stacks and Queues] : Brackets - pythonAlgorithm/코딜리티 2021. 1. 26. 18:52
문제 : app.codility.com/programmers/lessons/7-stacks_and_queues/brackets/
문제 내용
N개의 문자로 이루어진 문자열 S가 주어질 때, 아래의 조건인 경우 1을 return합니다.
- S는 비어있을 때
- S는 "( )" 또는 "[ ]" 또는 "{ }" 를 가질 때 적절하게 중첩되어 있다고 할 수 있다.
예를 들어,
S = "{[()()]}" or "([)()]"이 주어질 때,
전자는 적절하게 중첩되어 있으므로, 1을 return하고, 후자는 잘못 중첩되어 있기 때문에 0을 return한다.
제한 사항
- N은 0~200,000사이
- S를 구성하는 문자는 "(", "{", "[", "]", "}", ")"
코드
def solution(S): stack = [] for s in S: stack.append(s) if s == ")" or s =="]" or s =="}": c = stack.pop() if len(stack) == 0: return 0 p = stack.pop() if s == ")": if p != "(": return 0 elif s== "]": if p != "[": return 0 elif s== "}": if p != "{": return 0 return 1 if len(stack) == 0 else 0
해설
흔히 있는 stack 문제로, 하나씩 넣다가 반대의 문자가 나오면 if문으로 판단해서 빼주는 방식으로 문제를 풀어나가면 됩니다.
'Algorithm > 코딜리티' 카테고리의 다른 글
(코딜리티) Lesson 7. [Stacks and Queues] : Nesting - python (0) 2021.01.27 (코딜리티) Lesson 7. [Stacks and Queues] : Fish - python (0) 2021.01.26 (코딜리티) Lesson 6. [sorting] : triangle- python (0) 2021.01.26 (코딜리티) Lesson 6. [Sorting] : NumberOfDiscIntersections - python (0) 2021.01.25 (코딜리티) Lesson 6. [sorting] : MaxProductOfThree - python (0) 2021.01.25 댓글