[프로그래머스/JAVA] Lv.0 2차원으로 만들기

또치·2023년 1월 18일
0

프로그래머스 JAVA

목록 보기
4/20
post-thumbnail

2차원으로 만들기

🎀기억하고 싶은 부분🎀
2차원 배열
int[ ][ ]
첫번째 칸 - 배열안에 배열을 몇개를 넣을건지
두번째 칸 - 그 각각의 배열의 원소를 몇개로 할 것 인지

int[2][3]
{ {1,2,3},{1,2,3} }

🎯 문제

정수 배열 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_listnresult
[1, 2, 3, 4, 5, 6, 7, 8]2[[1, 2], [3, 4], [5, 6], [7, 8]]
<제한사항>
num_list의 길이는 n의 배 수개입니다.
0 ≤ num_list의 길이 ≤ 150
2 ≤ n < num_list의 길이

답안

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/n; i++) {
			for(int j=0; j<n; j++) { 
            		// num_list[(i*n)+j]; 요거 규칙 찾는게 힘들었는데 그래도 찾으니까 뿌듯했다
				answer[i][j]=num_list[(i*n)+j];
			}	
		}
        return answer;
    }
}

🎲 과정

일단 2차원 배열 너무 오랜만에 써서 어려웠다.
처음에는 n의 배수일때마다 배열을 잘라야 되나 싶었는데 배열을 자르는게 문제가 아니라 2차원배열로 새로 만들어줘야 되는거니까 택도 없는 짓이었어
그래서 그냥 반복문 돌려가지고 해당하는 2차원배열 인덱스에 값 지정해서 넣어줬다
문제는 2차원 배열 [][] 각각의 칸이 뭘 가르키는 길이였는지 까먹어가지고 그거 다시 이해하는데 시간이 좀 걸렸다.
첫번째칸에는 배열의 개수를 넣어줘야하는데 배열을 n개씩 쪼개주니까 num_ list를 n으로 나눈만큼 지정해주고 두번째 칸에는 각각의 배열의 원소 개수니까 n을 넣어줬다.
그리고 반복문을 돌릴때 첫번째, 두번째 칸에 크기에 맞게 돌렸더니 num_list 인덱스의 값을 가져오는게 문제였어 num_list 길이만큼 i를 해버리면 값이 엉망으로 들어가서 무조건 /n으로 조건 줘서 가져와야되니까 num_list[ ] 규칙 찾는게 너무너무 힘들었어...
근데 다 풀고나니까 다른 사람들은 int 변수를 카운트처럼 하나 만들어서 더 쉽게 잘 푸신것같아서 약간 현타왔어...

0개의 댓글