인풋을 받아 {}[]() 괄호가 짝지어 지면 'YES', 그렇지 않으면 'NO' 로 리턴하는 문제
def isBalanced(s):
# Write your code here
big = []
mid = []
small = []
if len(s)%2 ==1:
return 'NO'
s = list(s)
for i in s:
if i in ['(','{','[']:
small.append(i)
elif i==')' and len(small)!=0 and small[-1]=='(':
small.pop()
elif i == '}' and len(small)!=0 and small[-1]=='{':
small.pop()
elif i == ']' and len(small)!=0 and small[-1]=='[':
small.pop()
else:
return 'NO'
if len(big)!=0 or len(mid) != 0 or len(small) != 0:
return 'NO'
return 'YES'
Stack 를 이용하는 문제라면 당연히 pop() 을 쉽게 사용할 수 있는 방향으로 문제를 풀어야 한다.
당연히 괄호는 순서대로 채워지므로 stack 를 사용하면 그렇게 어려운 문제는 아니다.
그런데 생각을 하지 못해 문제를 푸는 데에 시간이 오래 걸렸다.
조금 더 효율적으로 푼다면 dictionary 를 사용할 수 있다.
def dict_isBalanced(s):
stack = []
dict = {'{':'}', '(':')', '[':']'}
for v in s:
if v in ['{','[','(']:
stack.append(v)
else:
if stack:
key = stack.pop()
if v == dict[key]:
return 'YES'
else:
return 'NO'
return 'NO' if stack else 'YES'
'백준 단계별 코딩 테스트' 카테고리의 다른 글
백준 : N과 M (4) (0) | 2022.10.09 |
---|---|
백준 : N과 M (3) (1) | 2022.10.08 |
HackerRank : Balanced Bracket (0) | 2022.09.18 |
HackerRank : Equal Stacks (0) | 2022.09.06 |
HackerRank prepare 문제 : Linked List 2 (0) | 2022.07.31 |
인풋을 받아 {}[]() 괄호가 짝지어 지면 'YES', 그렇지 않으면 'NO' 로 리턴하는 문제
def isBalanced(s):
# Write your code here
big = []
mid = []
small = []
if len(s)%2 ==1:
return 'NO'
s = list(s)
for i in s:
if i in ['(','{','[']:
small.append(i)
elif i==')' and len(small)!=0 and small[-1]=='(':
small.pop()
elif i == '}' and len(small)!=0 and small[-1]=='{':
small.pop()
elif i == ']' and len(small)!=0 and small[-1]=='[':
small.pop()
else:
return 'NO'
if len(big)!=0 or len(mid) != 0 or len(small) != 0:
return 'NO'
return 'YES'
Stack 를 이용하는 문제라면 당연히 pop() 을 쉽게 사용할 수 있는 방향으로 문제를 풀어야 한다.
당연히 괄호는 순서대로 채워지므로 stack 를 사용하면 그렇게 어려운 문제는 아니다.
그런데 생각을 하지 못해 문제를 푸는 데에 시간이 오래 걸렸다.
조금 더 효율적으로 푼다면 dictionary 를 사용할 수 있다.
def dict_isBalanced(s):
stack = []
dict = {'{':'}', '(':')', '[':']'}
for v in s:
if v in ['{','[','(']:
stack.append(v)
else:
if stack:
key = stack.pop()
if v == dict[key]:
return 'YES'
else:
return 'NO'
return 'NO' if stack else 'YES'
'백준 단계별 코딩 테스트' 카테고리의 다른 글
백준 : N과 M (4) (0) | 2022.10.09 |
---|---|
백준 : N과 M (3) (1) | 2022.10.08 |
HackerRank : Balanced Bracket (0) | 2022.09.18 |
HackerRank : Equal Stacks (0) | 2022.09.06 |
HackerRank prepare 문제 : Linked List 2 (0) | 2022.07.31 |