
내가 작성한 코드 1 (반복 버전)
class Solution {
public int solution(int[] num_list) {
int answer = 0; // 반환할 변수수
int count = 0; // 반복 횟수 저장 변수
for (int i = 0; i < num_list.length; i++) {
// 원소가 1일때 반복 횟수 더하고 다음 인덱스로 넘어감
if (num_list[i] == 1) {
answer += count;
count = 0;
continue;
}
// 짝수일때 2로 나누고 반복횟수 더하고 인덱스를 하나 줄임
if(num_list[i] % 2 == 0) {
num_list[i] = num_list[i] / 2;
count++;
i--;
continue;
} else { // 홀수일때 1을 빼고 2로 나누고 반복횟수 더하고 인덱스를 하나 줄임
num_list[i] = (num_list[i] - 1) / 2;
count++;
i--;
continue;
}
}
return answer;
}
}
내가 작성한 코드 2 (스트림 버전)
import java.util.stream.IntStream;
class Solution {
public int solution(int[] num_list) {
// 스트림을 사용하여 반복 횟수 계산
int answer = IntStream.of(num_list)
.map(num -> {
int count = 0;
while (num != 1) { // num이 1이 될 때까지 반복
if (num % 2 == 0) { // 짝수일 때
num /= 2;
} else { // 홀수일 때
num = (num - 1) / 2;
}
count++;
}
return count; // 각 숫자의 반복 횟수 반환
})
.sum(); // 모든 반복 횟수를 합산
return answer;
}
}
Share article