728x90
int n = 2;
int [] num_list = {1, 2, 3, 4, 5, 6, 7, 8};
일 때, answer는 2차원 배열이어야 한다. 따라서
int [][] answer = new int [num_list.length/n][n];
로 설정한다. 여기서 이중배열의 인덱스 수를 위와 같이 설정한 이유는, n개의 요소를 가진 배열이 num_list/n개 만큼 있어야 하기 때문이다.
다음으로 반복문 식을 생각해보자. num_list.length / n 은 8 / 2 이므로 4이다. 즉, 4개의 배열에 각각 2개의 요소가 들어가 있어야 한다는 의미이다. 반복문을 출력했을 때 결과가 다음과 같아야 한다.
1: 1, 2
2: 3, 4
3: 5, 6
4: 7, 8
위의 결과를 출력하기 위해 이중 for문을 작성하였다. 먼저 첫번째 반복문은 num_list/n 만큼 반복되고, 두번째 반복문은 n만큼 반복된다. 즉, num_list/n만큼 반복되는 동안 n번 반복되는 것이다. 이때 num_list의 인덱스를 반복시킬 count 변수를 만들어 ++해주어야 한다. num_list의 인덱스 값이 0~7까지 반복될 때 answer[i]에 1, 3, 5, 7의 값이 담기고 answer [j]에 2, 4, 6, 8의 값이 담긴다. 이와 같은 결과가 나오는 이유는, for문이 동작할 때 i에 0번 인덱스 값, j에 1번 인덱스값이 담기는 식으로 동작되기 때문이다.
정답 코드는 다음과 같다.
class Solution {
public int[][] solution(int[] num_list, int n) {
int[][] answer = new int [num_list.length/n][n];
int count = 0;
for (int i = 0 ; i< num_list.length/n; i++) {
//j: n개의 값을 answer에 넣기
for (int j = 0; j<n; j++) {
answer[i][j] = num_list[count];
count++;
}
}
return answer;
}
}
'프로그래머스 (Java)' 카테고리의 다른 글
프로그래머스 1. 폰켓몬(자바) (0) | 2023.10.27 |
---|---|
프로그래머스 0. 외계행성의 나이 (자바) (0) | 2023.10.01 |
프로그래머스 0. 배열 원소의 길이 (자바) (0) | 2023.09.21 |
프로그래머스 0. 점의 위치 (자바) (0) | 2023.09.21 |
프로그래머스 0. 짝수 홀수 (자바) (0) | 2023.09.21 |