[코딩테스트연습] 코딩테스트 입문 > Lv.0 n의 배수 고르기

2024. 3. 23. 12:13코딩 테스트/[프로그래머스] Java

문제 설명


문제 풀이

numlist에서 하나씩 가져와서 n의 배수인지 확인하려고 했다.

class Solution {
    public int[] solution(int n, int[] numlist) {
        int[] answer = {};
        for(int num: numlist){
            if(num%n==0) answer.append(num);
        }
        return answer;
    }
}

하지만 아무생각 없이 파이썬 문법마냥 작성해버렸다..

자바에서는 배열에 어떻게 새로운 원소를 추가할까?

방법을 찾아보니 여러가지 방법이 있었다.

그 중 배열을 List로 변환하여 .add()를 사용하는 방법이 있었다.

 

import java.util.*;

class Solution {
    public int[] solution(int n, int[] numlist) {
        int[] answer = {};
        List <Integer> answerList = new ArrayList <Integer>();
        for(int num: numlist){
            if(num%n==0){
               answerList.add(num);
            }
        }
        answerList.toArray(answer);
        return answer;
    }
}

하지만 error가 발생했다..

이 에러는 List.toArray() 메서드를 호출할 때 적절한 형식을 사용하지 않아 발생한다.

List.toArray() 메서드는 Object[] 타입의 배열을 인자로 받거나, 제네릭 형식의 배열을 인자로 받을 수 있는데,

int[]은 이러한 형식에 들어맞지 않아서 발생하는 것이다!

 

import java.util.*;

class Solution {
    public int[] solution(int n, int[] numlist) {
        List <Integer> answerList = new ArrayList <Integer>();
        for(int num: numlist){
            if(num%n==0) answerList.add(num);
        }
        int[] answer = new int[answerList.size()];
        for (int i = 0; i < answerList.size(); i++) {
            answer[i] = answerList.get(i);
        }
        return answer;
    }
}

따라서 배열에 원소 값을 하나씩 저장해주는 방식으로 작성해보았다.