250x250
Notice
Recent Posts
«   2024/11   »
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
관리 메뉴

일상 코딩

[python] 백준 알고리즘 7490번 0 만들기, 중복순열 풀이법 본문

코딩테스트/백준 online Judge

[python] 백준 알고리즘 7490번 0 만들기, 중복순열 풀이법

polarcompass 2021. 11. 11. 22:11
728x90

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

 

7490번: 0 만들기

각 테스트 케이스에 대해 ASCII 순서에 따라 결과가 0이 되는 모든 수식을 출력한다. 각 테스트 케이스의 결과는 한 줄을 띄워 구분한다.

www.acmicpc.net

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

모두 천편일률적인 재귀함수 방법을 사용하여 

중복 순열 라이브러리를 사용해서 풀어 보았다.

중복 순열에 대한것은 아래 링크 블로그로 들어가면 자세히 나와있다.

https://velog.io/@falling_star3/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%88%9C%EC%97%B4-%EC%A1%B0%ED%95%A9-%EC%A4%91%EB%B3%B5%EC%88%9C%EC%97%B4-%EC%A4%91%EB%B3%B5%EC%A1%B0%ED%95%A9itertools%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-%EA%B5%AC%ED%98%84

 

[Python] 순열, 조합, 중복순열, 중복조합(itertools를 활용한 구현)

순열, 조합, 중복순열, 중복조합의 정의와 차이를 비교하고 itertool 패키지를 활용해 python으로 구현해본다.

velog.io

재귀함수 풀이법은 이해도 가지 않아서 다른 방법이 없나 생각해보다

중복값을 허용하면서 순서를 만드는 중복순열을 적용했다.

또한 문자열 수식을 그대로 연산해주는 eval() 함수도 이용하였고,

숫자 사이의 공백은 제거해주는 .replace() 함수도 적용하여 전체 수식 값이 0인것만 출력하게

만들어 봤다.

728x90