728x90
반응형
출처 : 프로그래머스
문제 설명
다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다.
- (), [], {} 는 모두 올바른 괄호 문자열입니다.
- 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다.
- 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다.
대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- s의 길이는 1 이상 1,000 이하입니다.
def solution(s):
answer = 0
if len(s) %2 != 0:
return 0
satanderd_s="[](){}"
for idx in range(len(s)):
list_= []
isS = True
s_ = s[idx] + s[idx+1:]+s[:idx]
for idx_i, val_i in enumerate(s_):
if satanderd_s.index(val_i)%2 == 0:
list_.append(val_i)
else:
if len(list_) == 0:
isS = False
s_1 = satanderd_s[satanderd_s.index(val_i)-1]
if s_1 in list_:
list_.pop()
else:
isS = False
if len(list_) != 0:
isS = False
if isS == True:
answer += 1
return answer
테스트 케이스를 뚫었다.
def solution(s):
tmp_s = s
answer = 0
if len(s) % 2 == 1: return answer
for i in range(len(s)):
cnt = 0
t = tmp_s.replace("()", "").replace("{}", "").replace("[]", "")
while cnt <= 27:
t = t.replace("{}", "").replace("[]", "").replace("()", "")
t = t.replace("[]", "").replace("()", "").replace("{}", "")
t = t.replace("()", "").replace("{}", "").replace("[]", "")
cnt+=1
if t == "":
answer += 1
tmp_s = tmp_s[1:] + tmp_s[0]
return answer
이것으로 하니깐 17점을 맞았네요
반응형
'문제 > 프로그래머스' 카테고리의 다른 글
빛의 경로 사이클 (0) | 2022.02.02 |
---|---|
NULL 처리하기 (0) | 2022.01.26 |
신과 결과 받기 (0) | 2022.01.22 |
n^2 배열 자르기 (0) | 2022.01.15 |
쿼드압축 후 개수 세기 (0) | 2022.01.06 |