https://school.programmers.co.kr/learn/courses/30/lessons/120842
문제
정수 배열 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차원 배열로 변경합니다.
풀이
한 줄로 나열되어 있는 배열을 n개의 열을 가진 2차원 배열로 변경하는 문제이다.
먼저 새로운 배열의 크기를 설정한다.
- 행 : num_list의 길이 / n , 열 : n
이후 조건에 맞게 원소들을 배치하면 된다.
🔔 자세한 코드 설명은 더보기 란에 작성하였습니다.
1. 변경되는 배열의 열 개수는 n, 배열의 행 개수는 num_list의 길이 / n이다.
int[][] answer = new int[num_list.length / n][n];
2. num_list에 있는 숫자들을 새로운 배열로 옮겨야 하는데, 이 과정은 for문 하나로 해결할 수 있다.
for(int i = 0; i < num_list.length; i++) {
answer[i / n][i % n] = num_list[i];
}
이해를 돕기 위해 아래 표를 만들어보았다.
아래 표는 num_list의 길이가 8, 원소는 0 ~ 7이며, n = 2일 때의 결과이다.
0 : 0 / 2 = 0, 0 % 2 = 0 => 행 : 0, 열 : 0
1 : 1 / 2 = 0, 1 % 2 = 1 => 행 : 0, 열 : 1
2 : 2 / 2 = 1, 2 % 2 = 0 => 행 : 1, 열 : 0
3 : 3 / 2 = 1, 3 % 2 = 1 => 행 : 1, 열 : 1
4 : 4 / 2 = 2, 4 % 2 = 0 => 행 : 2, 열 : 0
5 : 5 / 2 = 2, 5 % 2 = 1 => 행 : 2, 열 : 1
6 : 6 / 2 = 3, 6 % 2 = 0 => 행 : 3, 열 : 0
7 : 7 / 2 = 3, 7 % 2 = 1 => 행 : 3, 열 : 1
코드
class Solution {
public int[][] solution(int[] num_list, int n) {
int[][] answer = new int[num_list.length / n][n];
for(int i = 0; i < num_list.length; i++) {
answer[i / n][i % n] = num_list[i];
}
return answer;
}
}
틀린 부분이 있다면 정정해 주시면 감사하겠습니다.
궁금한 부분이 있거나, 다른 아이디어가 있으시면 자유롭게 댓글 남겨주세요!
'[JAVA]프로그래머스 > Lv.0' 카테고리의 다른 글
[JAVA]프로그래머스 - 배열 회전시키기 (2) | 2024.01.31 |
---|---|
[JAVA]프로그래머스 - 공 던지기 (0) | 2023.12.28 |
[JAVA]프로그래머스 - 점의 위치 구하기 (2) | 2023.12.20 |
[JAVA]프로그래머스 - 구슬을 나누는 경우의 수 (2) | 2023.11.26 |
[JAVA]프로그래머스 - 개미 군단 (0) | 2023.11.09 |