황소개발자

백준 16936 파이썬 python : 나3곱2 @@황소처럼 우직하게@@ 재밌어 이런문제, 방법 2가지 제시 본문

백준 문제 풀이

백준 16936 파이썬 python : 나3곱2 @@황소처럼 우직하게@@ 재밌어 이런문제, 방법 2가지 제시

hjp845 2020. 4. 22. 02:50
반응형

마치 이 뭔가 분열되어가며 답을 찾는 이 느낌.

n = int(input())
B = list(map(int, input().split()))

def go(x, b, A):
    b.remove(x)
    A.append(x)
    least_one = False
    if not b:
        return True
    if x * 2 in b:
        least_one = True
        return go(x * 2, b, A)
    if x % 3 == 0 and x // 3 in b:
        least_one = True
        return go(x // 3, b, A)
    if not least_one:
        return False

for i in range(n):
    A = []
    flag = go(B[i], B.copy(), A)
    if flag:
        print(*A)
        break

ㄱ그리고 백준님 아이디어는 아래와 같다.. RESPECT..

그렇다.. 3과 2는 서로소. 서로 독립적이다. 나눈다면 다시 3으로 커질 수 없으며, 2로 곱한다면 다시 2로 작을수 없다..

3으로 나눌 수 있는게 클 수록 앞으로, 같다면 그안에서 오름차순

n = int(input())
b = list(map(int, input().split()))

a = []

for num in b:
    can3 = 0
    num_origin = num
    while True:
        if num % 3 == 0:
            can3 += 1
            num //= 3
        else:
            break
    a.append([can3, num_origin])

a.sort(key= lambda x: (-x[0], x[1]))
for i in range(n):
    print(a[i][1], end=' ')
반응형
Comments