문제
https://school.programmers.co.kr/learn/courses/30/lessons/181881
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드(Java)
class Solution {
public int solution(int[] arr) {
int answer = 0;
int[] prevArr = arr.clone();
int[] nextArr = arr.clone();
int n = arr.length;
while (true) {
boolean changed = false;
for (int i = 0; i < n; i++) {
int val = nextArr[i];
int newVal;
if (val >= 50 && val % 2 == 0) {
newVal = val / 2;
} else if (val < 50 && val % 2 != 0) {
newVal = val * 2 + 1;
} else {
newVal = val;
}
if (newVal != val) changed = true;
nextArr[i] = newVal;
}
if (!changed) break;
answer++;
}
return answer;
}
}
코드(Python)
def solution(arr):
answer = 0
next_arr = arr[:]
n = len(arr)
while True:
changed = False
for i in range(n):
val = next_arr[i]
if val >= 50 and val % 2 == 0:
new_val = val // 2
elif val < 50 and val % 2 != 0:
new_val = val * 2 + 1
else:
new_val = val
if new_val != val:
changed = True
next_arr[i] = new_val
if not changed:
break
answer += 1
return answer
728x90