# [이.취.코] [프로그래머스] Chap 13. BFS_DFS - Q18. 괄호 변환

- Author: @mildsalmon
- Published: 2021-09-23
- Updated: 2021-09-28
- Source: http://blex.me/@mildsalmon/%EC%9D%B4%EC%B7%A8%EC%BD%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-chap-13-bfs_dfs-q18-%EA%B4%84%ED%98%B8-%EB%B3%80%ED%99%98
- Tags: 파이썬, 알고리즘, 프로그래머스, 한빛미디어, 나동빈, 코딩테스트, 문제, 재귀함수

---

# 1. 괄호 변환

- 난이도
	- 하
- 풀이 시간
	- 20분
- 시간 제한
	- 1초
- 메모리 제한
	- 128 MB
- 출처
	- [코딩테스트 연습 - 괄호 변환 | 프로그래머스 (programmers.co.kr)](https://programmers.co.kr/learn/courses/30/lessons/60058)

### A. 문제

위 프로그래머스 사이트에 접속하여 문제를 확인해주세요.
	
### B. 내 답안

```python

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. 문제 해설

> 이해한 내용을 바탕으로 작성했습니다.

- 균형잡힌 괄호 문자열
	- '(' 의 개수와 ')'의 개수가같은 문자열
- 올바른 괄호 문자열
	- 균형잡힌 괄호 문자열이고 '(' 와 ')' 의 괄호의 짝이 모두 맞는 문자열

문제에 제시된 논리대로 해결하면 된다.

##### a. 책 답안

[python-for-coding-test/4.py at master · ndb796/python-for-coding-test (github.com)](https://github.com/ndb796/python-for-coding-test/blob/master/13/4.py)

# 참고문헌

[1] 나동빈, "이것이 취업을 위한 코딩 테스트다 with 파이썬", 초판, 2쇄, 한빛미디어, 2020년

[2] [코딩테스트 연습 - 괄호 변환 | 프로그래머스 (programmers.co.kr)](https://programmers.co.kr/learn/courses/30/lessons/60058). Programmers. (accessed Sep 24, 2021)
