정수 배열 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 | n | result |
|---|---|---|
| [1, 2, 3, 4, 5, 6, 7, 8] | 2 | [[1, 2], [3, 4], [5, 6], [7, 8]] |
| num_list | n | result |
|---|---|---|
| [1, 2, 3, 4, 5, 6, 7, 8] | 2 | [[1, 2], [3, 4], [5, 6], [7, 8]] |
| [100, 95, 2, 4, 5, 6, 18, 33, 948] | 3 | [[100, 95, 2], [4, 5, 6], [18, 33, 948]] |
입출력 예 #1
num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 2 * 4 배열로 변경한 [[1, 2], [3, 4], [5, 6], [7, 8]] 을 return합니다.
입출력 예 #2
num_list가 [100, 95, 2, 4, 5, 6, 18, 33, 948] 로 길이가 9이고 n이 3이므로 3 * 3 배열로 변경한 [[100, 95, 2], [4, 5, 6], [18, 33, 948]] 을 return합니다.
def solution(num_list, n):
answer = []
for i in range(0, len(num_list), n):
answer.append(num_list[i:i+n])
return answer
| num_list | n | result |
|---|---|---|
| [1, 2, 3, 4, 5, 6, 7, 8] | 2 | [[1, 2], [3, 4], [5, 6], [7, 8]] |
위의 예시일 경우,
range(0, 8, 2) => 0부터 7까지 2간격으로i = 0인 경우, num_list[0:2] => 0번 인덱스부터 1번 인덱스까지 출력 ( [1, 2] )i = 2인 경우, num_list[2:4] => 2번 인덱스부터 3번 인덱스까지 출력 ( [3, 4] )i = 4인 경우, num_list[4:6] => 4번 인덱스부터 5번 인덱스까지 출력 ( [5, 6] )i = 6인 경우, num_list[6:8] => 6번 인덱스부터 7번 인덱스까지 출력 ( [7, 8] )import numpy as np
def solution(num_list, n):
li = np.array(num_list).reshape(-1,n)
return li.tolist()
np.reshape 함수 기본 사용법
기본적인 사용 방법은 배열 a에 대하여 a.reshape(변환 shape) 혹은 np.reshape(a, 변환 shape)형태로 사용해주시면 됩니다. axis 순서대로(가로 -> 세로 축 방향) 값들을 변환되는 shape으로 재배정하는 원리이며, 재배정이 불가능한 shape인 경우 ValueError가 발생합니다.
import numpy as np a = np.arange(9) # array([0, 1, 2, 3, 4, 5, 6, 7, 8]) a.reshape(3, 3) # np.reshape(a, (3, 3))으로도 사용 가능 '''array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])''' a.reshape(2, 5) # ValueError: cannot reshape array of size 9 into shape (2,5) # 2 * 5가 9가 아니라서 발생reshape 함수 -1의 의미: -1을 넣은 자리에는 가능한 shape을 자동 계산하여 반영
더보기: https://jimmy-ai.tistory.com/99#google_vignette
def solution(num_list, n):
answer = []
temp = []
for i in num_list:
temp.append(i)
# 목표 개수 도달 시, answer에 밀어 넣고 비움
if len(temp) == n:
answer.append(temp)
temp = []
return answer