이번 문제는 그리디 알고리즘을 통해 해결하였다. 주어진 문제와 반대로 모든 배열의 값을 0으로 만드는 방향으로 접근하였다. 우선 2로 나누는 연산이 0으로 가까워지기 훨씬 효율적인 연산이므로, 배열의 값 중 하나라도 짝수가 아닐 때까지 전체에 나누는 연산을 적용하였다. 그리고 배열을 순회하며 홀수인 경우 1을 빼주었다. 이 과정이 끝나면 다시 배열의 모든 값들이 짝수가 되므로, 위 과정을 계속해서 반복할 수 있게 된다.
n = int(input())
arr = list(map(int, input().split()))
answer = 0
def chk_even():
for i in range(n):
if arr[i]%2 == 0:
continue
else:
return False
return True
while arr != [0 for _ in range(n)]:
while chk_even():
for i in range(n):
arr[i] //= 2
answer += 1
for i in range(n):
if arr[i]%2 == 1:
arr[i] -= 1
answer += 1
print(answer)