ABC79 C - Train Ticket이 풀렸다.





op 는 2 종류밖에 없는 데다,
op는 3개밖에 없다. 2 ^ 3 그래서 모든 탐색에서 여유가 있습니다.

TrainTicket.py
ABCD = input()
lisST = list(ABCD)
lisINT = list(map(lambda x:int(x),lisST))
OP =["+","-"]
#print(lisST,lisINT)
ans = ""
from itertools import product
for op1,op2,op3 in product(["+","-"],repeat=3):
    #print(op1,op2,op3)
    if op1 == "+":
        num1=lisINT[0]+lisINT[1]
        ans += lisST[0]+"+"+lisST[1]
    else:
        num1=lisINT[0]-lisINT[1]
        ans += lisST[0]+"-"+lisST[1]

    if op2 == "+":
        num2=num1+lisINT[2]
        ans += "+"+lisST[2]
    else:
        num2=num1-lisINT[2]
        ans += "-"+lisST[2]

    if op3 == "+":
        num3=num2+lisINT[3]
        ans += "+"+lisST[3]
    else:
        num3=num2-lisINT[3]
        ans += "-"+lisST[3]

    if num3 == 7:
        print(ans+"=7")
        break
    else:
        ans = ""


전부 열거는 고통이었기 때문에,
문자를 그대로 계산할 수 있는 eval() 를 사용했다.

abc79c.py
S = list(input())

from itertools import product
for op in product(["+","-"],repeat=3):
    op = list(op)
    num = ""
    for i in range(3):
        num += S[i]+op[i]
    num += S[3]
    if eval(num)==7:
        print(num+"=7")
        exit()

좋은 웹페이지 즐겨찾기