📑 1. 문제설명


💡 2. 풀이과정
✔️answer 배열 크기 = (num_list.length / n) x n
- 행(row): `(num_list.length / n)`
- 열(column): `n`
✔️num_list[i]를 삽입할 answer 배열의 인덱스
- 행(row): `i / n`
- 열(column): `i % n`
문제의 입력 예시처럼 [1, 2, 3, 4, 5, 6, 7, 8], n = 2 일 때
| i | num_list[i] | i / n (행 인덱스) | i % n (열 인덱스) | 배치 결과 |
| 0 | 1 | 0 | 0 | answer[0][0] = 1 |
| 1 | 2 | 0 | 1 | answer[0][1] = 2 |
| 2 | 3 | 1 | 0 | answer[1][0] = 3 |
| 3 | 4 | 1 | 1 | answer[1][1] = 4 |
| 4 | 5 | 2 | 0 | answer[2][0] = 5 |
| 5 | 6 | 2 | 1 | answer[2][1] = 6 |
| 6 | 7 | 3 | 0 | answer[3][0] = 7 |
| 7 | 8 | 3 | 1 | answer[3][1] = 8 |
answer[0][0] = 1, answer[0][1] = 2
answer[1][0] = 3, answer[1][1] = 4
answer[2][0] = 5, answer[2][1] = 6
answer[3][0] = 7, answer[3][1] = 8
answer[ i / n ][ i % n ] = [[1, 2], [3, 4], [5, 6], [7, 8]] 을 반환한다.
👨💻 3. 정답코드
import java.util.*;
class Solution {
public int[][] solution(int[] num_list, int n) {
int row = num_list.length / n; // 이차원 배열의 행 개수
int[][] answer = new int[row][n];
for(int i = 0; i < num_list.length; i++) {
answer[i / n][i % n] = num_list[i]; // n개씩 나눠서 채우기
}
return answer;
}
}

✅ 오답정리
처음에 배열 크기 선언할 때
- answer 배열의 크기는 num_list.length / n x n이어야 하지만, 처음에 num_list.length x 2로 잘못 설정함
- 배열 채우는 로직에서 answer[i - 1][0], answer[i - 1][1]이 아니라, answer[i / n][i % n]로 수정함.
👏🏻 4. 다른 분들의 코드
✔️ 가장 일반적인 코드
class Solution {
public int[][] solution(int[] num_list, int n) {
int[][] answer = new int[num_list.length/n][n];
int cnt = 0;
for(int i = 0 ; i < num_list.length/n ; i++){
for(int j = 0 ; j < n ; j++){
answer[i][j] = num_list[cnt];
cnt++;
}
}
return answer;
}
}
✔️ 이걸 Stream으로 푼 것
import java.util.stream.IntStream;
class Solution {
public int[][] solution(int[] num_list, int n) {
return IntStream.range(0, num_list.length / n)
.mapToObj(i -> IntStream.range(0, n)
.map(j -> num_list[i * n + j])
.toArray())
.toArray(int[][]::new);
}
}
✔️ 더 간단해진 코드
class Solution {
public int[][] solution(int[] num_list, int n) {
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[i*n+j];
}
}
return answer;
}
}'코딩테스트 > JAVA테스트' 카테고리의 다른 글
| [프로그래머스] (Java) 주사위의 개수 문제풀이 (6) | 2025.03.24 |
|---|---|
| [프로그래머스] (Java) 배열 회전시키기 문제풀이 (3) | 2025.03.24 |
| [프로그래머스] (Java) 구슬을 나누는 경우의 수 문제풀이 (15) | 2025.03.23 |
| [프로그래머스] (Java) 가위 바위 보, 머쓱이보다 키 큰 사람, 점의 위치 구하기 문제풀이 (9) | 2025.03.21 |
| [프로그래머스] (Java) 모스부호(1) 문제풀이 (6) | 2025.03.19 |