[JAVA] 프로그래머스 : 1로 만들기

조예빈·2024년 8월 31일
0

Coding Test

목록 보기
126/136

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

초반에 문제를 제대로 이해하지 않아서 각 요소를 나누는 최대 횟수를 구하면 되는줄 알았다(총 배열을 몇 번 나눠야 모든 요소가 1이 되는지를 구하는줄 알았음). 하지만, 그게 아니라 나눗셈이 발생한 횟수만 구해주면 되므로 answer값만 증가시키면 되는 문제이다.

class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        //현재 원소를 기준으로 계속 나눠주면 됨 -> 전체 나누는 횟수를 구하기 때문에 answer 초기화 필요 X
        for(int i=0; i<num_list.length; i++){
            while(num_list[i] != 1){
                if(num_list[i] == 1){
                    break;
                }
                if(num_list[i]%2 == 0){
                    answer++;
                    num_list[i] = num_list[i]/2;
                }else{
                    answer++;
                    num_list[i] = (num_list[i]-1)/2;
                }
            }
        }
        return answer;
    }
}

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글