반응형
파이썬, 유효한 괄호쌍 출력하기 (백트래킹)
글. 오상문 sualchi@daum.net
올바른 괄호쌍을 출력하는 예제입니다.
예를 들어 괄호 3쌍일 때 올바른 괄호쌍 경우는 5가지입니다.
{{{}}}
{{}{}}
{{}}{}
{}{{}}
{}{}{}
예제 코드는 다음과 같습니다.
data = []
count = 0
def solution(n, Open, Close, s):
global count
# 열린것과 닫힌 것이 같으면
if Open==n and Close==n:
data.append(s) # 괄호쌍 문자열 추가, 종료
count += 1
return
# 아래에서 유효한 경우만 진행하므로
# 다른 종료 검사는 필요없음
# 백트래킹, 유효하지 않은 경우는 가지치기
if Open < n: # 열린 것이 n보다 작으면
solution(n, Open+1, Close, s+'{')
if Open > Close: # 열린게 닫힌 것보다 많으면
solution(n, Open, Close+1, s+'}')
# --------- main -----------------
N = int(input())
solution(N, 0, 0, "")
print(count, '개')
for s in data:
print(s)
<이상>
반응형
'Python 기초' 카테고리의 다른 글
파이썬, 하노이 탑(hanoi tower) 재귀호출 및 반복문 (0) | 2020.08.07 |
---|---|
파이썬, 조합과 순열 구하기 (백트래킹) (0) | 2020.07.07 |
파이썬, 가능한 N자리 이진수 경우의 수 (백트래킹 이용) (0) | 2020.07.06 |
파이썬, N Queen 퀸 배치 경우 수 구하는 백트래킹 예제 (0) | 2020.07.06 |
파이썬, 텍스트 파일 읽기 쓰기 예제 (0) | 2020.02.06 |