티스토리 뷰
반응형
문제
풀이
구현 자체는 전혀 어렵지 않은 문제다.
다만 스텝바이스텝 정확하게 뭘 하라는건지 설명을 이해하는게 어려웠다
3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다.
4-2. 문자열 v에 대해 1단계부터 재귀적으로 수행한 결과 문자열을 이어 붙입니다.
1단계부터 어디까지 하라는건지 고민했는데 알고보니 전체 solution함수 자체를 돌리라는 말이었다.
교훈: 문제 이해가 어려우면 테스트케이스 보고 유추 후, 일단 풀기.
실행했을때 틀리면 그때
1. 실수 없는지 먼저 확인 후 2. 의미가 애매했던 부분 설명 다르게 이해해보기
def solution(p):
# 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다.
if not p or isTrue(p):
return p
# 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다.
# 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다.
u, v = checkBalance(p)
# 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다.
flag = isTrue(u)
if flag:
# 문자열 v에 대해 1단계부터 다시 수행합니다.
# 3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다.
return u + solution(v)
else:
# 4-2. 문자열 v에 대해 1단계부터 재귀적으로 수행한 결과 문자열을 이어 붙입니다.
str = "(" + solution(v) + ")"
newu = u[1:-1]
for each in newu:
if each == "(":
str += ")"
else:
str += "("
return str
# 균형잡힌 괄호 문자열인지 확인하는 함수
def checkBalance(p):
li = [-1 for _ in range(len(p))]
index = -1
for i in range(len(p)):
if p[i] == "(":
if i == 0:
li[i] = 1
else:
li[i] = li[i-1] + 1
if li[i] == 0:
index = i
break
else:
if i == 0:
li[i] = -1
else:
li[i] = li[i-1] - 1
if li[i] == 0:
index = i
break
u = p[:index+1]
v = p[index+1:]
return u, v
# 올바른 괄호 문자열인지 체크하는 함수
def isTrue(u):
stack = []
for each in u:
if each == "(":
stack.append(1)
else:
if stack:
stack.pop()
else:
return False
return True
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 카카오 키해시
- 카카오 기출
- flutter simultor
- 데이터바인딩 뷰바인딩 차이
- 파이썬 최대공약수
- 백준알고리즘
- kotlin fragment
- 카카오톡으로 로그인 오류
- Kotlin
- 백준
- 코틀린 뷰바인딩
- TextFormField keyboard
- 코틀린 뷰페이저
- 프로그래머스
- 코틀린 리스트뷰
- 코틀린
- 시뮬레이터 키보드
- 코틀린 데이터바인딩
- 안드로이드 카카오톡으로 로그인
- counting sort
- 코틀린 바텀네비게이션
- 안드로이드 키해시
- 투포인터 알고리즘
- 백준 1806
- 백준 2003
- 안드로이드
- 전화번호목록 파이썬
- 백준 1644
- 소수 구하기 파이썬
- 투포인터 알고리즘 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 | 30 | 31 |
글 보관함