[JAVA 문제 풀이] 162. 1로 만들기

프로그래머스 (181880)
Stupefyee's avatar
Mar 27, 2025
[JAVA 문제 풀이] 162. 1로 만들기
notion image
 

내가 작성한 코드 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

stupefyee