일상 코딩
[python] 백준 알고리즘 7490번 0 만들기, 중복순열 풀이법 본문
728x90
https://www.acmicpc.net/problem/7490
from itertools import product as pd
T = int(input())
for _ in range(T):
n = input()
for operator in list(pd(' +-', repeat=int(n)-1)):
formula = ''
for idx, op in enumerate(operator, 1):
formula += str(idx) + op
formula += n
if eval(formula.replace(' ', '')) == 0:
print(formula)
print()
입력 예시
2
3
7
출력 예시
1+2-3
1+2-3+4-5-6+7
1+2-3-4+5+6-7
1-2 3+4+5+6+7
1-2 3-4 5+6 7
1-2+3+4-5+6-7
1-2-3-4-5+6+7
모두 천편일률적인 재귀함수 방법을 사용하여
중복 순열 라이브러리를 사용해서 풀어 보았다.
중복 순열에 대한것은 아래 링크 블로그로 들어가면 자세히 나와있다.
재귀함수 풀이법은 이해도 가지 않아서 다른 방법이 없나 생각해보다
중복값을 허용하면서 순서를 만드는 중복순열을 적용했다.
또한 문자열 수식을 그대로 연산해주는 eval() 함수도 이용하였고,
숫자 사이의 공백은 제거해주는 .replace() 함수도 적용하여 전체 수식 값이 0인것만 출력하게
만들어 봤다.
728x90
'코딩테스트 > 백준 online Judge' 카테고리의 다른 글
[python] 백준 알고리즘 1302번 베스트셀러, sorted()를 이용한 풀이 (0) | 2021.11.13 |
---|---|
[python] 백준 알고리즘 1543번 문서 검색, 리스트 슬라이싱을 활용한 풀이 (0) | 2021.11.12 |
[python] 백준 알고리즘 1074번 Z, 다이나믹 프로그래밍 풀이법 (0) | 2021.11.10 |
[python] 백준 10989번 수 정렬하기 3, 계수 정렬 및 readline() 함수 적용. (0) | 2021.11.09 |
[python] 백준 알고리즘 5397번 키로거, 문자열 풀이 (0) | 2021.11.07 |