
내가 작성한 코드 1(반복문 버전)
import java.util.*;
class Solution {
public int solution(int[] arr) {
int count = 0;
while (true) {
int[] copied = Arrays.copyOf(arr, arr.length); // 배열 복사
// 조건에 맞게 배열 값 변경
for (int i = 0; i < copied.length; i++) {
if (copied[i] >= 50 && copied[i] % 2 == 0) {
copied[i] /= 2;
} else if (copied[i] < 50 && copied[i] % 2 == 1) {
copied[i] = copied[i] * 2 + 1;
}
}
// 배열이 같으면 횟수 반환
if (Arrays.equals(arr, copied)) {
return count;
}
// 배열이 다르면 다시 반복 (반복 횟수 증가, 배열 변경)
arr = copied;
count++;
}
}
}
내가 작성한 코드 2 (스트림 버전)
import java.util.*;
class Solution {
public int solution(int[] arr) {
int count = 0; // 반복 횟수
while (true) {
// 현재 배열을 복사하여 이전 상태로 저장
int[] previous = Arrays.copyOf(arr, arr.length);
// 배열의 각 원소에 대해 조건에 따라 변환
arr = Arrays.stream(arr)
.map(i -> i >= 50 && i % 2 == 0 ? i / 2 : i < 50 && i % 2 == 1 ? i * 2 + 1 : i)
.toArray();
// 이전 상태와 현재 상태가 같으면
if (Arrays.equals(previous, arr)) {
break; // 반복 종료
} else {
count++; // 다르면 반복 횟수 증가
}
}
return count; // 반복 횟수 반환
}
}
Share article