Post

2023.DEC.11(MON) JAVA DAY6_배열 길이가 2진수인지 확인해 늘리기

✅ Daily Report

📌 TO-DO LIST

  • submit github blog post
  • lesson 23, 24, 25, 26, 27
  • assigment: 2진법

✅ Today I Learned

배열의 길이를 확인해서 2진수이면 그대로, 아니면 더 채워서 이진수 길이 만들기

arr length가 2진법인지 확인

확인해서 참이면 array를 return
https://soheeparklee.github.io/posts/JAVA_operator/ https://soheeparklee.github.io/posts/JAVA_operator/

1
2
3
4
int arrLength = oldArray.length;
        if ((arrLength & (arrLength - 1)) == 0) {
            return oldArray;
        }

우리가 가진 배열의 길이에 가장 가까운 2진수 숫자 구하기

int targetLength= 1로 하나 변수 정해서
이 변수에 계속 2를 곱하고
우리의 배열 길이랑 비교함.

1
2
3
4
int newArrLength = 1;
        while (newArrLength < arrLength) {
            newArrLength = newArrLength * 2;
        }

가장 근접한 2진수 숫자 구했으면 0 몇개 더해야하는지 구함

추가해야 하는 0의 개수

1
int[] newArray = new int[newArrLength];

0을 추가한 배열 반환

1
2
3
4
5
6
7
        for (int i = 0; i < arrLength; i++) {
            newArray[i] = oldArray[i];

        }return newArray;
      //새로운 배열 newArr을 만들었음.
      //여기에 arr[i](기존 배열)을 넣을건데, 다 넣고 남은 인덱스는 넣을 것이 없으니 0으로 채워질 것임.
      //arr[i]가 없으면 0이 추가될 것임

☑️ final code

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
import java.util.Arrays;

public class Test {
public static void main(String[] args){
    int[] arr1 = {1, 2, 3, 4, 5, 6};
    int[] result1 = getArray(arr1);
    System.out.println(Arrays.toString(result1));

}
    static int[] getArray(int oldArray[]) {
        int arrLength = oldArray.length;
        if ((arrLength & (arrLength - 1)) == 0) {
            return oldArray;
        }
        int newArrLength = 1;
        while (newArrLength < arrLength) {
            newArrLength = newArrLength * 2;
        }
        int[] newArray = new int[newArrLength];
        for (int i = 0; i < arrLength; i++) {
            newArray[i] = oldArray[i];

        }return newArray;
    }
}
This post is licensed under CC BY 4.0 by the author.