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

2차원으로 만들기_programmers_lev002

jju_developer 2022. 12. 11. 01:16
728x90

<코딩 테스트>

정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요.

num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.

 

 

<나의 풀이 과정>

처음에 이중배열을 풀때 초기화 하는 곳에서 [num_list.length/n] [n] 로 지정을 해주었습니다.

행과 열만 잘 생각 한다면, 첫번째 for 문은 행을 구하고, 두번째 for 문은 열을 구할때

열의 길이를 행의 길이보다 작을때로 지정을 하였씁니다.

num_list를 어떻게 다 넣을까 고민하다가 num 변수를 선언하여 num++을 하도록 구현했습니다.

 

<나의 풀이 코드>

class Solution {
    public int[][] solution(int[] num_list, int n) {
		int num = 0;
		int[][] answer = new int [num_list.length/n][n];
		for (int i = 0; i < answer.length; i++) {
			for (int j = 0; j < answer[i].length; j++) {
				answer[i][j] = num_list[num];
				num++;
			}
		}
		return answer;
	}
}

<다른사람 풀이 1>

class Solution {
    public int[][] solution(int[] num_list, int n) {
        int[][] answer = {};

        int length = num_list.length;

        answer = new int[length/n][n];

        for(int i=0; i<length; i++){
            answer[i/n][i%n]=num_list[i];
        }

        return answer;
    }
}

 

<다른사람 풀이 2>

import java.util.Arrays;

class Solution {
    public int[][] solution(int[] num_list, int n) {
        int[][] answer = new int[num_list.length/n][n];

        int chk = 0;
        for(int i =0; i <= num_list.length-1; i+=n){
            int[] a = Arrays.copyOfRange(num_list, i, i+n);
            answer[chk] = a;
            chk++;
        }
        return answer;
    }
}

 

 

 

 

 

 

 

 

728x90