[HackerRank] Balanced Brackets
- 문제 링크
https://www.hackerrank.com/challenges/balanced-brackets/problem?isFullScreen=true
- 생각
더보기
닫는 괄호까지 달린다.
닫는 괄호가 나오면 앞부분을 자른다. 앞부분은 sliced
앞부분에서 제일 뒤에 있는 연괄호를 찾는다(역정렬)
앞부분에서 연 괄호를 찾는다
짝을 맞췄으니 pop으로 버린다
반복반복
절대 좋은 코드는 아니라고 생각하기에 다양하게 시도해보길 바란다.
같이 알고리즘 문제를 풀던 지인분의 코드는 정말 깔끔하고 참신해서 더 분발해야겠다.
지인분은 .replace()를 이용해서 10줄이하로 푸셨다. 굿굿
- 코드
def isBalanced(s):
s = list(s)
result = "YES"
#store
openList = ['(', '{','[']
closeList = [')', '}',']']
while(len(s)>0):
a = list()
if(')' in s):
a.append(s.index(')'))
if('}' in s):
a.append(s.index('}'))
if(']' in s):
a.append(s.index(']'))
if(len(a) == 0):
result = "NO"
break
realMin = min(a)
bracketIndex = closeList.index(s[realMin]) #index
closeIndex = s.index(closeList[bracketIndex])
sliced=list()
sliced = s[0: closeIndex]
if(not openList[bracketIndex] in sliced):
result = "NO"
break
sliced.reverse()
reverseOpenIndex = sliced.index(openList[bracketIndex])
openIndex = len(sliced) -1 - reverseOpenIndex
if(closeIndex-openIndex ==1):
s.pop(closeIndex)
s.pop(openIndex)
else:
result = "NO"
break
return result
'공부 > Algorithm' 카테고리의 다른 글
[LeetCode] Implement Trie (0) | 2022.03.21 |
---|---|
[LeetCode] Two sum (0) | 2022.03.15 |
[HackerRank] Jesse and Cookies (0) | 2022.03.09 |
[HackerRank] Equal stacks (0) | 2022.03.08 |
[HackerRank] Merge two sorted linked lists (0) | 2022.03.07 |
댓글