본문 바로가기
코딩테스트 연습

배열의 길이를 2의 거듭제곱으로 만들기

by 신재은👩🏼‍💻 2024. 4. 20.

문제 설명
정수 배열 arr이 매개변수로 주어집니다. arr의 길이가 2의 정수 거듭제곱이 되도록 arr 뒤에 정수 0을 추가하려고 합니다. arr에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요.

제한사항
1 ≤ arr의 길이 ≤ 1,000
1 ≤ arr의 원소 ≤ 1,000


입출력 예
arr result
[1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5, 6, 0, 0]
[58, 172, 746, 89] [58, 172, 746, 89]


import java.util.ArrayList;
import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr) {
        int[] answer;
        int arrLength = arr.length;
        ArrayList<Integer> arrList = new ArrayList<>();
        for (int num : arr) {
            arrList.add(num);
        }

        for(int i = 0; i <= 10; i++) {
            int pow = (int) Math.pow(2, i);
            if(pow >= arrLength) {
                while(arrList.size() < pow) {
                    arrList.add(0);
                }
                break;
            }
        }

        answer = arrList.stream().mapToInt(i -> i).toArray();
        
        return answer;
    }
}


코드를 다 짠(?) 뒤, GPT한테 코드에서 틀린 점 없는지 체크 받고 있다.

틀린 것 중 80%는 문법이고 20%는 로직이다.

이렇게 해도 되는지 모르겠다만... 대안이 없다.

아니, 달리 할 수 있는 방법이 없다.

 

GPT한테 체크 받은 뒤 제출하는 이유는... 그렇게 하지 않으면 거의 1점 밖에 획득을 못 하기 때문이다.

나는 지금까지 코드 실행 횟수나 코드 제출 후 실패 등의 요인이 획득 점수 등에 영향을 미치고 있는 줄 전혀 생각을 안 하고 있었다.

 

다른 사람들은 100문제 정도만 풀었는데도 순위가 100등인 걸 봤다.

나는...

이 부분이 그다지 바람직하거나 정상적이지 않다고 생각하게 된 뒤

'개발 포기해야 되나'라는 생각까지 했다.

사실 지금도 하고 있다. 진지하게.

'코딩테스트 연습' 카테고리의 다른 글

특정 문자열로 끝나는 가장 긴 부분 문자열 찾기  (0) 2024.04.20
문자열이 몇 번 등장하는지 세기  (0) 2024.04.20
한 번만 등장한 문자  (0) 2024.04.20
가까운 수  (0) 2024.04.20
k의 개수  (0) 2024.04.20