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)
'Algorithm > baekjoon' 카테고리의 다른 글
[파이썬]baekjoon 3187: 양치기 꿍 (0) | 2023.02.13 |
---|---|
[파이썬]baekjoon 12904: A와 B (0) | 2023.02.10 |
[파이썬]baekjoon 16198: 에너지 모으기 (0) | 2023.02.09 |
[파이썬]baekjoon 1496: 기타 고르기 (0) | 2023.02.09 |
[파이썬]baekjoon 14719: 빗물 (0) | 2023.02.07 |
댓글