본문 바로가기
프로그램

[파이썬] 문제 : 2,3,4,6를 @@*@@=@@*@@를 만족하는 조건 찾기

by 오디세이99 2023. 5. 25.
728x90
반응형

문제 

2,3,4,6을 입력 시  
@@ * @@ = @@ * @@ 중 , @에 하나의 숫자를 넣어서 
등호 기준 왼쪽, 오른쪽에 2,3,4,6을 한번씩만 넣어야 합니다!!

만약에 2,3,4,6 입력 시
23 * 64 = 32 * 46
24* 63 = 36 * 42 를 추출

 

방법

lst = [2,3,4,6]

def gen_case():
    tmp = []
    # [[0, 1], [0, 2], [0, 3], [1, 0], [1, 2], [1, 3]...]
    for i in range(len(lst)):
        for j in range(len(lst)):
            if i != j:
                tmp.append([i, j])
    
    # [ [[0,1],[0,2]], [[0,1],[0,3], [[0,1],[0,4]]]...]
    rtn = []
    for i in range(len(tmp)):
        for j in range(i+1, len(tmp)):
            rtn.append([tmp[i], tmp[j]])
    return rtn

# @@ * @@ = @@ * @@
case_lst = gen_case()         # 모든 조건을 불러옴

for i in range(len(case_lst)):            # 왼쪽 조건
    for j in range(i+1,len(case_lst)):    # 오른쪽 조건
        if case_lst[i][0][0] != case_lst[i][1][0] and case_lst[j][0][0] != case_lst[j][1][0]:   # 왼쪽조건에서 같은수가 없거나 오른쪽에서 같은수가 없는 경우만
            a1 = case_lst[i][0][0]     # 왼쪽 첫번째 수의 인덱스. 0,1,2,3 중에 하나
            a2 = case_lst[i][0][1]     # 왼쪽 두번째 수의 인덱스. 0,1,2,3 중에 하나
            a3 = case_lst[i][1][0]
            a4 = case_lst[i][1][1]
            b1 = case_lst[j][0][0]     # 오른쪽 첫번째 수의 인덱스. 0,1,2,3 중에 하나
            b2 = case_lst[j][0][1]     # 오른쪽 두번째 수의 인덱스. 0,1,2,3 중에 하나
            b3 = case_lst[j][1][0]
            b4 = case_lst[j][1][1]
            # print(a1,a2,a3,a4,b1,b2,b3,b4)
            na1 = lst[a1]              # 왼쪽 첫번째 수 인덱스에 대한 lst=[2,3,4,6] 의 요소값
            na2 = lst[a2]              # 왼쪽 두번째 수 인덱스에 대한 lst=[2,3,4,6] 의 요소값
            na3 = lst[a3]
            na4 = lst[a4]
            nb1 = lst[b1]              # 오른쪽 첫번째 수 인덱스에 대한 lst=[2,3,4,6] 의 요소값
            nb2 = lst[b2]              # 오른쪽 두번째 수 인덱스에 대한 lst=[2,3,4,6] 의 요소값
            nb3 = lst[b3]
            nb4 = lst[b4]
            # print(f"{na1}{na2} * {na3}{na4} ({(na1*10+na2)*(na3*10+na4)}) == {nb1}{nb2} * {nb3}{nb4} ({(nb1*10+nb2)*(nb3*10+nb4)})")
            if (na1*10+na2)*(na3*10+na4) == (nb1*10+nb2)*(nb3*10+nb4):             # 왼쪽 조건과 오늘쪽 조건이 같으면
                print(f"True: {na1}{na2} * {na3}{na4} == {nb1}{nb2} * {nb3}{nb4}")   # 조건 출력

728x90
반응형

댓글