def solution(s):
answer = 0
tmp = ""
new_s = s
while tmp != s:
tmp = new_s[1:] + new_s[0:1] // 문자열 시프트
new_s = tmp
stack = []
for i in range(len(new_s)):
if ( new_s[i] == ']' or new_s[i] == '}' or new_s[i] == ')' ) and len(stack) == 0:
stack.append(1) // stack에 남은 문자열을 확인하기 위해
break
elif (new_s[i] == ']' and stack[-1] == '[') and len(stack) != 0:
stack.pop()
elif (new_s[i] == '}' and stack[-1] == '{') and len(stack) != 0:
stack.pop()
elif (new_s[i] == ')' and stack[-1] == '(') and len(stack) != 0:
stack.pop()
else:
stack.append(new_s[i])
if len(stack) == 0:
answer +=1
return answer
1. 문자열 시프트
2. Stack 이용하여 append, pop 진행.
3. 마지막 Stack의 길이가 남으면 짝이 안 맞는 괄호, 길이가 0이면 짝이 맞는 괄호
3-1. 처음부터 짝이 안맞는 괄호가 나오면 ( ex. ], }, ) ) 그대로 Stack의 길이도 0이라 이러한 Case에서는 1을 집어넣어 Stack의 길이를 0이 아니게 하여 판단한다.
'코딩테스트 연습' 카테고리의 다른 글
[Softeer] 지도 자동 구축 (0) | 2023.09.14 |
---|---|
[Softeer] 비밀 메뉴 (0) | 2023.09.13 |
[Programmers] 캐시 (0) | 2023.09.11 |
[Programmers] n^2 배열 자르기 (0) | 2023.09.08 |
[Programmers] 땅따먹기 (0) | 2023.09.08 |