Develop

[프로그래머스] 1로 만들기 본문

개인 공부/프로그래머스

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

개발 기록 2024. 2. 12. 11:24

문제

 

 

 

내풀이

class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        for(int a : num_list){
            while(a>1){
                    a = (a%2==0)?a/2:(a-1)/2;
                answer++;
            }
        }
        return answer;
    }
}

 

 

다른풀이

import java.util.Arrays;

class Solution {
    public int solution(int[] num_list) {
        return Arrays.stream(num_list).map(i -> Integer.toBinaryString(i).length() - 1).sum();
    }
}

 

느낀점

 

이외에도 많은 풀이 방법이 있었으나 크게 stream 사용과 for문+while문 사용으로 나누어졌다

 

다른풀이의 코드는 num_list의 내용물을 1개씩 꺼내서 바이너리 스트링으로 만들고 길이 - 1이 1이 될때까지 나눈 횟수를 구한 것이라고 한다

바이너리 스트링으로 만들고 길이를 이용하는 방법은 신박하지만 아직 나에겐 어렵다..

 

추가적인 내용으로는 제시된 숫자가 int형이기 때문에 굳이 홀수일때 -1을 해줄 필요가 없다

알아서 없어지기 때문 ㅎ