파이썬/백준 문제
[파이썬][백준] 7490번: 0 만들기
코딩고치
2020. 5. 30. 00:13
1. 문제
주소: https://www.acmicpc.net/problem/7490
7490번: 0 만들기
문제 1부터 N까지의 수를 오름차순으로 쓴 수열 1 2 3 ... N을 생각하자. 그리고 '+'나 '-', 또는 ' '(공백)을 숫자 사이에 삽입하자(+는 더하기, -는 빼기, 공백은 숫자를 이어 붙이는 것을 뜻한다). 이��
www.acmicpc.net
문제 유형: 재귀 함수
- 1부터 n까지의 수열을 만든 후 총 $3^{n-1}$개의 가능한 연산자 리스트를 재귀 함수로 구현
- 최대 n은 9이므로 완전 탐색을 이용해도 상관 없음
- 수와 연산자 리스트를 이용하여 string으로 수식을 나타냄
- eval() 함수를 이용하여 string 형태의 수식을 계산
- 계산값이 0일 경우 해당 수식을 출력
2. 소스코드
import sys
import copy
def operator(list, n):
if len(list) == n:
operator_list.append(copy.deepcopy(list))
return
list.append(' ')
operator(list, n)
list.pop()
list.append('+')
operator(list, n)
list.pop()
list.append('-')
operator(list, n)
list.pop()
test = int(sys.stdin.readline())
for _ in range(test):
operator_list = []
n = int(sys.stdin.readline())
operator([], n - 1)
nums = [i for i in range(1, n + 1)]
for operators in operator_list:
string = ''
for i in range(n - 1):
string += str(nums[i]) + operators[i]
string += str(nums[-1])
if eval(string.replace(' ', '')) == 0:
print(string)
print()