문제 설명에 제시된 과정대로 문제를 해결하였습니다.
테스트 12부터 틀리시는 분들은 다음 조건이 문자열을 역순하는 것이 아닌 '(' -> ')' , ')' -> ')' 괄호의 방향을 바꿔야하는 조건임을
유의해주세요 !
u의 첫 번째와 마지막 문자를 제거하고, 나머지 문자열의 괄호 방향을 뒤집어서 뒤에 붙입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
def solution(p:str)->str:
if not p: return p
u,v = split(p)
if is_proper(u): return u + solution(v)
else: return '(' + solution(v) + ')' + reverse(u)
# u,v로 나누는 함수
def split(string:str)->str:
count=0
for i,s in enumerate(string):
count+= 1 if s=='(' else -1
if count==0: break
return string[:i+1], string[i+1:]
# 올바른 괄호 문자열인지 확인 함수
def is_proper(string:str)->bool:
stack=[]
for s in string:
if s=='(': stack.append(s)
elif not stack: return False
else: stack.pop()
return not stack
# 문제 4-4 조건 실행하는 함수
def reverse(string:str)->str:
return ''.join([ '(' if s==')' else ')' for s in string[1:-1]])
|
'알고리즘 공부' 카테고리의 다른 글
[BOJ] 소수 구하기(1929) 문제 풀기 | Python3 (0) | 2021.08.27 |
---|---|
[2019 KAKAO BLIND RECRUITMENT] 실패율 | Python3 (0) | 2021.08.26 |
[2020 KAKAO BLIND RECRUITMENT] 문자열 압축 | Python3 (0) | 2021.08.25 |
[2021 KAKAO BLIND RECRUITMENT] 순위 검색 | Python3 (0) | 2021.08.24 |
[2021 카카오 하계 인턴십 코딩테스트] 3번 표 편집 | Python3 (0) | 2021.07.17 |