💡문제접근
- 배열 A를 배열 B로 만들기 위한 방법을 찾는 것보다 배열 B를 배열 A로 만들기 위한 방법을 찾는 것이 더 수월하다.
- 문제에서 주어진 연산을 바꿔 표현하면 다음과 같다.
①. 배열에 있는 값 하나를 1 감소시킨다.
②. 배열에 있는 모든 값을 2로 나눈다.
💡코드(메모리 : 31388KB, 시간 : 44ms)
import sys
input = sys.stdin.readline
N = int(input().strip())
A = [0] * N
B = list(map(int, input().strip().split()))
B.sort()
cnt = 0
while True:
flag = 0
if sum(A) == sum(B):
break
for i in range(N):
if B[i] % 2 != 0 or B[i] == 0 or B[i] == 1:
if B[i] == 0:
continue
else:
B[i] -= 1
cnt += 1
flag = 1
if flag == 0:
for i in range(N):
B[i] //= 2
cnt += 1
print(cnt)
💡소요시간 : 10m