본문 바로가기
Algorithm/baekjoon

[파이썬]baekjoon 12931: 두 배 더하기

by 갈잃자 2023. 2. 10.

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

 

12931번: 두 배 더하기

모든 값이 0으로 채워져 있는 길이가 N인 배열 A가 있다. 영선이는 다음과 같은 두 연산을 수행할 수 있다. 배열에 있는 값 하나를 1 증가시킨다. 배열에 있는 모든 값을 두 배 시킨다. 배열 B가 주

www.acmicpc.net


문제를 거꾸로 생각해서 주어진 B에서 A가 되게끔 생각하며 문제를 접근하였음

 

모든 값이 2로 나누어 지면 나눠주고, 하나라도 나누어지지 않는다면 -1을 하여 A값에 도달하게 끔 구현

n = int(input())
arr = list(map(int,input().split()))
arr.sort(reverse=True)
cnt = 0
while arr != [0]*n:
    yn = True
    for i in range(len(arr)):
        if arr[i] %2 !=0:
            arr[i] = arr[i] -1
            cnt +=1
            yn = False
            break
    if yn == True:
        for i in range(len(arr)):
            if arr[i] != 0:
                arr[i] = arr[i]//2
        cnt +=1
print(cnt)

댓글