관리 메뉴

여름 언덕에서 배운 것

[0단계/6점]배열의 길이를 2의 거듭제곱으로 만들기 본문

가랑비에 옷 젖는 줄 모른다 💻/🌰코테문풀_꾸준히

[0단계/6점]배열의 길이를 2의 거듭제곱으로 만들기

잔뜩 2025. 2. 5. 16:33

처음에 테스트 코드는 통과하는데 22번만 틀림

import java.util.*;
class Solution {
    public int[] solution(int[] arr) {
        int newLength = 1;
        while(true){
            newLength*=2;
            if(newLength>=arr.length){
                break;
            }
        }
        int[] answer = new int[newLength];
        System.arraycopy(arr,0,answer,0,arr.length);
        return answer;
    }
}

생각해보니 2의 0승은 1이라서 arr={22} 만 주어진다면   위의 코드대로라면 => {2 , 0} 이 되버림

그래서 아래와 같이 수정 

import java.util.*;
class Solution {
    public int[] solution(int[] arr) {
        int newLength = 1;
        while(newLength<arr.length){
            newLength*=2;
        }
        int[] answer = new int[newLength];
        System.arraycopy(arr,0,answer,0,arr.length);
        return answer;
    }
}

System.arraycopy는 배열을 복사함 

System.arraycopy(복사할 배열 , 복사를 시작할 인덱스, 새로 만들 배열, 새 배열에 붙여 넣을 인덱스, 복사할 요소의 개수  )

728x90