Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 1로 만들기 (Java/자바) 본문

알고리즘문제/프로그래머스(Java)

[프로그래머스] - 1로 만들기 (Java/자바)

luke-king 2026. 1. 20. 23:09

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/181880

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        
        for(int num : num_list){
            while(num != 1){
                if(num % 2 == 0){
                    num /= 2;
                    answer++;
                }else{
                    num = (num-1) / 2;
                    answer++;
                }
            }
        }
        return answer;
    }
}

이번 문제는 프로그래머스 "1로 만들기" 문제다.

문제 접근은 어렵지 않다. 설명에 나온 그대로 짝수이면 2로 나눠주고 홀수 이면 1을 뺸 후 2로 나눠 1로 만들어지는 연산 횟수를 구하는 거다. 그럼 바로 풀이해보겠다.

 

1. num_list[]의 값을 for-each문으로 값을 뽑아낸다.

 

2. 1이 만들어질 때까지 반복하기 위해 while문을 사용해 준다. 당연히 1이 되면 종료되어야 하기에 조건은 num != 1로 해준다.

 

3. 이제 조건인  짝수 num % 2 == 0 일 경우 2로 나누어 떨어지니 num /= 2 를 해주도 answer 값을 1 증가시켜준다.

 

4. 마지막으로 else 부분의 홀수 일 경우 (num - 1) / 2를 해주고 answer 값을 1 증가시켜주면 끝이다.