일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 동적 계획
- MiniHeap
- 유닉스
- 스택
- UNIX
- format 메서드
- Git
- 기초
- 자료구조
- 재귀 함수
- 분할 정복
- 정렬
- 그래프
- 이진 탐색
- 순차 탐색
- 트리
- 문법
- 백준
- NQueen
- type 함수
- sys.stdin.readline()
- 우분투
- 알고리즘
- 자기개발
- 탐색
- 배열
- IT
- 그리디
- git hub
- 파이썬
Archives
- Today
- Total
코딩고치
[파이썬][백준] 7490번: 0 만들기 본문
1. 문제
주소: https://www.acmicpc.net/problem/7490
문제 유형: 재귀 함수
- 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()
'파이썬 > 백준 문제' 카테고리의 다른 글
[파이썬][백준] 11004번: k번째 수 (0) | 2020.05.31 |
---|---|
[파이썬][백준] 2751번: 수 정렬하기 2 (0) | 2020.05.31 |
[파이썬][백준] 1074번: Z (0) | 2020.05.29 |
[파이썬][백준] 2747번: 피보나치 수 (0) | 2020.05.28 |
[파이썬][백준] 10989번: 수 정렬하기 (0) | 2020.05.28 |
Comments