주니어 기초 코딩공부/JAVA_programmers_코딩테스트

약수 구하기_programmers_lev00

jju_developer 2022. 12. 5. 23:54
728x90

<코딩 테스트>

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

1 ≤ n ≤ 10,000

 

<나의 풀이 과정>

int를 초기화 하는 과정에서 주어진 n의 최대값으로 우선 초기화를 한 뒤, 인덱스의 값을 구하였습니다.

answer의 배열의 길이는 해당 인덱스의 길이이고, array에 담아서 배열을 옮겼습니다.

 

<나의 풀이 코드>

class Solution {
    public int[] solution(int n) {
		int[] arry = new int[10000];
		int index = 0;

		for (int i = 1; i <= n; i++) {
			if (n % i == 0) {
				arry[index] = i;
				index++;
			}
		}
		int[] answer = new int[index];
		for (int i = 0; i < index; i++) {
			if (arry[i] != 0) {
				answer[i] = arry[i];
			}
		}
		return answer;
	}
}

 

<다른사람 풀이 1>

import java.util.List;
import java.util.ArrayList;

class Solution {
    public int[] solution(int n) {
        List<Integer> answer = new ArrayList<>();
        for(int i=1; i<=n; i++){
            if(n % i == 0){
                answer.add(i);
            }
        }
        return answer.stream().mapToInt(x -> x).toArray();
    }
}

 

<다른사람 풀이 2>

class Solution {
    public int[] solution(int n) {
        int[] answer = {};
        answer = new int[n];
        int index=0;
        for(int i=1; i<=n; i++){
            if(n%i==0) answer[index++]=i;
        }
        int[] answer2 = new int[index];
        for(int i=0; i<index; i++){
            answer2[i] = answer[i];
        }

        return answer2;
    }
}
728x90