Open fun1ty opened 1 year ago
def solution(arr):
count=0
before = arr[:]
i=0
ch=[0]*len(arr)
while 1:
if i==len(arr):
for x in range(len(arr)):
if before[x]==arr[x]:
ch[x]=1
else:
before[x]=arr[x]
i=0
count+=1
if sum(ch) ==len(arr):
return count-1
break
else:
if arr[i]>=50 and arr[i]%2==0:
arr[i]=int(arr[i]/2)
elif arr[i]<50 and arr[i]%2==1:
arr[i]=int(arr[i]*2)+1
i+=1
list2 = list1[:]
list2 = list(list1)
list2 = [] + list1
list2 = list1.copy()
class Solution { public int solution(int[] arr) { int loop = 0; while (true) { int index = 0; for (int i = 0; i < arr.length; i++) { if (arr[i] >= 50 && arr[i] % 2 == 0) { arr[i] /= 2; index++; continue; } if (arr[i] < 50 && arr[i] % 2 == 1) { arr[i] = arr[i] * 2 + 1; index++; continue; } } if (index != 0) { loop++; continue; } break; }
int answer = loop;
return answer;
}
}
문제 설명
정수 배열
arr
가 주어집니다.arr
의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다.이러한 작업을
x
번 반복한 결과인 배열을arr(x)
라고 표현했을 때,arr(x) = arr(x + 1)
인x
가 항상 존재합니다. 이러한x
중 가장 작은 값을 return 하는 solution 함수를 완성해 주세요.단, 두 배열에 대한 "="는 두 배열의 크기가 서로 같으며, 같은 인덱스의 원소가 각각 서로 같음을 의미합니다.
제한사항
arr
의 길이 ≤ 1,000,000arr
의 원소의 값 ≤ 100입출력 예
arr | result -- | -- [1, 2, 3, 100, 99, 98] | 5arr
가 변하지 않으며,arr(5) = arr(6)
이므로 5를 return 합니다.