코딩테스트/Python
[Python] 백준 #12931 - 두 배 더하기
yo~og
2022. 3. 28. 20:33
문제
https://www.acmicpc.net/problem/12931
12931번: 두 배 더하기
모든 값이 0으로 채워져 있는 길이가 N인 배열 A가 있다. 영선이는 다음과 같은 두 연산을 수행할 수 있다. 배열에 있는 값 하나를 1 증가시킨다. 배열에 있는 모든 값을 두 배 시킨다. 배열 B가 주
www.acmicpc.net
풀이
n = int(input())
arr = list(map(int,input().split()))
cnt=0
while any(arr): # arr 에 1 이상이 하나라도 있을 경우 반복
tmp = [i for i in arr] # 2로 나누어질 경우 저장
for i in range(len(arr)):
if arr[i] %2 ==0 : # 만약 2로 나눠지면
tmp[i] = arr[i]//2 # tmp에 2로 나눈 결과 저장
else: #나눠지지 않으면
arr[i]-=1 # 1을 뺌
cnt+=1
break
else: # 모두 2로 나누어지면 arr에 tmp 대입
arr = tmp
cnt+=1
print(cnt)
리스트가 모두 0이 될 때 까지 반복문을 돌려주었다.
tmp는 2로 나눈 결과를 저장하는 리스트이다.
만약 arr이 모두 2로 나누어지면 arr에 tmp를 대입한다.
2로 나눠지는 숫자가 존재하면 -1을 빼주고 다시 반복문을 돌린다.