1. 괄호 변환
- 난이도
- 하
- 풀이 시간
- 20분
- 시간 제한
- 1초
- 메모리 제한
- 128 MB
- 출처
A. 문제
- 하
- 20분
- 1초
- 128 MB
위 프로그래머스 사이트에 접속하여 문제를 확인해주세요.
B. 내 답안
def balance_str(w):
l_count = 0
r_count = 0
for i in w:
if i == '(':
l_count += 1
elif i == ')':
r_count += 1
if l_count == r_count:
return l_count + r_count
def right_str(u):
count = 0
if u[0] == '(':
for i in u:
if i == '(':
count += 1
elif i == ')':
count -= 1
if count < 0:
return False
return True
elif u[0] == ')':
return False
def solution(p):
if len(p) == 0:
return p
split_num = balance_str(p)
u = p[:split_num]
v = p[split_num:]
# print(u)
if right_str(u) == True:
# temp = solution(v)
# if len(temp)
answer = u + solution(v)
return answer
elif right_str(u) == False:
answer = '(' + solution(v) + ')'
u = u[1:-1]
for i in u:
if i == '(':
answer += ')'
elif i == ')':
answer += '('
return answer
print(solution("()))((()"))
a. 회고
내 풀이
- 문제에 주어진대로 풀었다.
반성
- 문제를 대충 읽는다는 점과 재귀를 확실히 못다룬다는 점이 문제다.
결론
- 문제를 완전히 읽고 풀자.
C. 문제 해설
이해한 내용을 바탕으로 작성했습니다.
- 균형잡힌 괄호 문자열
- '(' 의 개수와 ')'의 개수가같은 문자열
- 올바른 괄호 문자열
- 균형잡힌 괄호 문자열이고 '(' 와 ')' 의 괄호의 짝이 모두 맞는 문자열
def balance_str(w):
l_count = 0
r_count = 0
for i in w:
if i == '(':
l_count += 1
elif i == ')':
r_count += 1
if l_count == r_count:
return l_count + r_count
def right_str(u):
count = 0
if u[0] == '(':
for i in u:
if i == '(':
count += 1
elif i == ')':
count -= 1
if count < 0:
return False
return True
elif u[0] == ')':
return False
def solution(p):
if len(p) == 0:
return p
split_num = balance_str(p)
u = p[:split_num]
v = p[split_num:]
# print(u)
if right_str(u) == True:
# temp = solution(v)
# if len(temp)
answer = u + solution(v)
return answer
elif right_str(u) == False:
answer = '(' + solution(v) + ')'
u = u[1:-1]
for i in u:
if i == '(':
answer += ')'
elif i == ')':
answer += '('
return answer
print(solution("()))((()"))
내 풀이
- 문제에 주어진대로 풀었다.
반성
- 문제를 대충 읽는다는 점과 재귀를 확실히 못다룬다는 점이 문제다.
결론
- 문제를 완전히 읽고 풀자.
C. 문제 해설
이해한 내용을 바탕으로 작성했습니다.
- 균형잡힌 괄호 문자열
- '(' 의 개수와 ')'의 개수가같은 문자열
- 올바른 괄호 문자열
- 균형잡힌 괄호 문자열이고 '(' 와 ')' 의 괄호의 짝이 모두 맞는 문자열
이해한 내용을 바탕으로 작성했습니다.
- '(' 의 개수와 ')'의 개수가같은 문자열
- 균형잡힌 괄호 문자열이고 '(' 와 ')' 의 괄호의 짝이 모두 맞는 문자열
문제에 제시된 논리대로 해결하면 된다.
a. 책 답안
python-for-coding-test/4.py at master · ndb796/python-for-coding-test (github.com)
참고문헌
[1] 나동빈, "이것이 취업을 위한 코딩 테스트다 with 파이썬", 초판, 2쇄, 한빛미디어, 2020년
[2] 코딩테스트 연습 - 괄호 변환 | 프로그래머스 (programmers.co.kr). Programmers. (accessed Sep 24, 2021)
Ghost