Notice
Recent Posts
Recent Comments
Archives
반응형
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Total
01-24 05:46
250x250
관리 메뉴

꿈꾸는 개발자의 블로그

[백준] Python - 2800 괄호 제거 본문

Algorithm/Baekjoon

[백준] Python - 2800 괄호 제거

aldrn29 2022. 11. 19. 21:00

문제 링크

https://www.acmicpc.net/problem/2800

 

2800번: 괄호 제거

첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개

www.acmicpc.net

 

문제 풀이

  1. ()의 쌍을 찾는다. (ex. "(0/(0))"의 경우 [(3, 5), (0, 6)])
  2. 조합으로 모든 경우의 수를 찾는다.
  3. 경우의 수에 따라 for 문을 돌면서 해당 자리를 비우고, result에 추가한다. 
  4. 정렬하여 출력한다.

 

전체 코드

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
Comments