Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오픽가격
- ㅂ
- 오픽점수잘받는방법
- fibo
- English
- 주석
- dynamicProgramming
- 탑다운
- XML
- 오픽노잼공부방법
- topdown
- stack 스택
- 피보나치수열
- 디피
- 이진탐색
- 바텀업
- 오픽
- dp
- 메모이제이션
- XML주석
- 이진탐색 #나무 자르기
- 다이나믹프로그래밍
- 영어말하기
- 오픽노잼
- 안드로이드
- 영어회화
- 오픽공부법
- 안드로이드주석
- opic
Archives
RUBY
[카카오] 괄호 변환 본문
출처:: 2020 카카오 신입 공채 1차 https://programmers.co.kr/learn/courses/30/lessons/60058
분류:: 구현
1. 문제 이해 및 해결과정
2. 풀이방법
1. 구현
#올바른 괄호 문자열인지 판단
def paren(w):
cnt=0
for x in w:
if x=='(':
cnt+=1
else:
if cnt==0:
return False
cnt-=1
return True
#균형잡힌 괄호 문자열인지
def balanced_paren(p):
leng=len(p)
left=right=0
for i in range(leng):
if p[i]=='(':
left+=1
else:
right+=1
if left==right:
return i
def solution(p): #p는 균형잡힌 괄호 문자열
empty = ''
leng=len(p)
left=right=0
if leng==0: #빈 문자열이면, 빈 문자열 반환
return empty
index=balanced_paren(p)
u=p[:index+1]
v=p[index+1:leng]
if paren(u): #올바른 괄호 문자열이면
empty= u + solution(v) #u에 이어 붙인 후 반환
else:
empty='('
empty+= solution(v)
empty+= ')'
u=u[1:len(u)-1]
nu=""
for x in u:
if x==')':
nu+='('
else:
nu+=')'
empty+=nu
return empty
2. 같은 풀이
def balanced_paren(p):
cnt=0
for i in range(len(p)):
if p[i]=='(':
cnt+=1
else:
cnt-=1
if cnt==0:
return i
#전제가 균형잡힌 문자열을 받은 것이므로 return 이 없을 순 없음
def paren(p):
cnt=0
for x in p:
if x=='(':
cnt+=1
else:
if cnt==0:
return False
cnt-=1
return True
def solution(p):#p는 균형잡힌 문자열
answer = ''
if p=='':
return answer
index= balanced_paren(p)
u=p[:index+1]
v=p[index+1:]
if paren(u):
answer=u+solution(v)
else: #올바른 문자열이 아니면
answer='('
answer+=solution(v)
answer+=')'
u=list(u[1:-1])
for i in range(len(u)):
if u[i]==')':
u[i]='('
else:
u[i]=')'
answer+="".join(u)
return answer
3. 오답원인
4. 알게된 점
'PS > This' 카테고리의 다른 글
[카카오] 가사 검색 (0) | 2020.09.09 |
---|---|
문자열 재정렬 (0) | 2020.09.08 |
[백준] 병사 배치하기 (0) | 2020.09.01 |
[백준] 퇴사 | 삼성 (0) | 2020.08.30 |
[백준] 뱀 | 삼성 (0) | 2020.08.27 |
Comments