(2020 KAKAO Blind Recruitment) 괄호 변환
Problem
카카오 홈페이지 코멘트
- 정답률: 23.1%
- 출제 의도
- 주어진 로직을 그대로 구현할 수 있는지 파악
- 재귀함수를 이해하고 작성할 수 있는지 파악
- 해설
- 올바른 괄호쌍이라는 친숙한 내용과 관련된 문제입니다. 문제에는 짝이 맞지 않는 괄호가 주어졌을 때, 이를 짝이 맞는 괄호로 변환하는 방법이 제시되었습니다. 괄호쌍을 확인하는 방법과 재귀함수에 대해 이해하고 있고, 문제에 주어진 대로 정확히 코딩할 수 있다면 어렵지 않게 해결할 수 있었습니다.
- 정답률: 23.1%
- 출제 의도
- 주어진 로직을 그대로 구현할 수 있는지 파악
- 재귀함수를 이해하고 작성할 수 있는지 파악
- 해설
- 올바른 괄호쌍이라는 친숙한 내용과 관련된 문제입니다. 문제에는 짝이 맞지 않는 괄호가 주어졌을 때, 이를 짝이 맞는 괄호로 변환하는 방법이 제시되었습니다. 괄호쌍을 확인하는 방법과 재귀함수에 대해 이해하고 있고, 문제에 주어진 대로 정확히 코딩할 수 있다면 어렵지 않게 해결할 수 있었습니다.
My solution
def solution(p):
def divide_uv(s):
count_l = 0
count_r = 0
for i in range(len(s)):
if s[i] == '(':
count_l += 1
else: # s[i] == ')':
count_r += 1
if count_l == count_r:
break
return s[:i+1], s[i+1:]
def right(s):
result = True
count = 0
for i in range(len(s)):
if s[i] == '(':
count += 1
else: # s[i] == ')':
count -= 1
if count < 0:
result = False
break
return result
if p is '': # 1번 조건
return ''
u, v = divide_uv(p) # 2번 조건
if right(u) == True: # 3번 조건
return u+solution(v)
else: # right(u) == False: 4번 조건
answer = '(' #4-1
answer += solution(v) #4-2
answer += ')' #4-3
del_u = u[1:-1] #4-4
for i in range(len(del_u)):
if del_u[i] == '(':
answer += ')'
else: # del_u[i] == ')':
answer += '('
return answer #4-5
def divide_uv(s):
count_l = 0
count_r = 0
for i in range(len(s)):
if s[i] == '(':
count_l += 1
else: # s[i] == ')':
count_r += 1
if count_l == count_r:
break
return s[:i+1], s[i+1:]
def right(s):
result = True
count = 0
for i in range(len(s)):
if s[i] == '(':
count += 1
else: # s[i] == ')':
count -= 1
if count < 0:
result = False
break
return result
if p is '': # 1번 조건
return ''
u, v = divide_uv(p) # 2번 조건
if right(u) == True: # 3번 조건
return u+solution(v)
else: # right(u) == False: 4번 조건
answer = '(' #4-1
answer += solution(v) #4-2
answer += ')' #4-3
del_u = u[1:-1] #4-4
for i in range(len(del_u)):
if del_u[i] == '(':
answer += ')'
else: # del_u[i] == ')':
answer += '('
return answer #4-5
댓글
댓글 쓰기