꿈꾸는 개발자의 블로그
[백준] Python - 2800 괄호 제거 본문
문제 링크
https://www.acmicpc.net/problem/2800
문제 풀이
- ()의 쌍을 찾는다. (ex. "(0/(0))"의 경우 [(3, 5), (0, 6)])
- 조합으로 모든 경우의 수를 찾는다.
- 경우의 수에 따라 for 문을 돌면서 해당 자리를 비우고, result에 추가한다.
- 정렬하여 출력한다.
전체 코드
from itertools import combinations
expression = input().strip()
pair = []
temp = []
result = set()
for index, word in enumerate(expression) :
if word == '(' :
temp.append(index)
elif word == ')' :
pair.append((temp.pop(), index))
for i in range(1, len(pair)+1) :
cases = combinations(pair, i)
for j in cases :
ex = list(expression)
for (start, end) in j :
ex[start] = ""
ex[end] = ""
result.add(''.join(ex))
for r in sorted(list(result)):
print(r)
728x90
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] Python - 22942 데이터 체커 (0) | 2022.11.21 |
---|---|
[백준] Python - 2493 탑 (0) | 2022.11.20 |
[백준] Python - 10799 쇠막대기 (0) | 2022.11.18 |
[백준] Python - 1874 스택 수열 (0) | 2022.11.17 |
[백준] Python - 20437 문자열 게임 2 (0) | 2022.09.20 |
Comments