inblog logo
|
silver
    알고리즘문제풀기

    [알고리즘문제풀기] 1로 만들기

    silver's avatar
    silver
    Apr 19, 2025
    [알고리즘문제풀기] 1로 만들기
    Contents
    문제내가 작성한 정답다른 사람들의 정답

    문제

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

    내가 작성한 정답

    class Solution { public int solution(int[] num_list) { int answer = 0; for(int i=0; i<num_list.length; i++){ int a = num_list[i]; while (a!=1){ if(a%2==0) a = a / 2; else a = (a - 1) / 2; answer++; } } return answer; } } // 위에 작성한 것 stream으로 변환시키기 import java.util.*; class Solution { public int solution(int[] num_list) { return Arrays.stream(num_list) .map(i-> { int count = 0; while (i != 1) { if (i % 2 == 0) i = i / 2; else i = (i - 1) / 2; count++; } return count; }).sum(); } }

    다른 사람들의 정답

    toBinaryString

    import java.util.Arrays; class Solution { public int solution(int[] num_list) { return Arrays.stream(num_list) .map(i -> Integer.toBinaryString(i).length() - 1) // - Integer.toBinaryString(i): 정수 i를 2진수 문자열로 변환한다. (예: 7 -> "111") // - .length(): 2진수 문자열의 길이를 구한다. (예: "111" -> 3) // - -1: 2진수 표현에 필요한 비트 수에서 1을 뺀디. // (사실상 2진수 표현의 자릿수 -1, 예를 들어 7은 "111"로 3자리지만, 2^2 + 2^1 + 2^0 으로 표현되므로 2가 된다.) // - 결과적으로, 각 정수를 2진수로 표현하는 데 필요한 최소 비트 수 - 1을 계산힌다. .sum(); // 3. 스트림의 모든 요소 (각 정수에 대해 계산된 비트 수 - 1)를 합산하여 최종 결과를 반환힌다. } }

    int 타입이라 -1 필요없음

    class Solution { public int solution(int[] num_list) { int answer = 0; for(int i = 0;num_list.length>i;i++){ while(num_list[i]!=1){ num_list[i]/=2; answer++; } } return answer; } }

    int 타입이라 -1 필요없음

    class Solution { public int solution(int[] num_list) { int answer = 0; int a = 0; for(int i = 0; i < num_list.length; i++){ int j = 0; while (num_list[i] >= Math.pow(2, j)) { a = j; j++; } answer += a; } return answer; } }
     
     
    Share article

    silver

    RSS·Powered by Inblog