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
'주니어 기초 코딩공부 > JAVA_programmers_코딩테스트' 카테고리의 다른 글
가까운 수_programmers_lev00 (0) | 2022.12.11 |
---|---|
k의 개수_programmers_lev00 (0) | 2022.12.11 |
A로 B 만들기_programmers_lev00 (0) | 2022.12.11 |
모스 부호 (1)_programmers_lev00 (1) | 2022.12.09 |
중복된 문자 제거_programmers_lev00 (0) | 2022.12.09 |