문제
https://www.acmicpc.net/problem/12931
풀이
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을 빼주고 다시 반복문을 돌린다.
'코딩테스트 > Python' 카테고리의 다른 글
[Python] 백준 #21942 - 부품 대여장 (0) | 2022.03.29 |
---|---|
[Python] 백준 #2573 - 빙산 (0) | 2022.03.28 |
[Python] 백준 #2435 - 기상청 인턴 신현수 (0) | 2022.03.28 |
[Python] 프로그래머스 - 괄호 회전하기 (0) | 2022.03.23 |
[Python] 백준 #2204 - 도비의 난독증 테스트 (2) | 2022.03.23 |