(프로그래머) LV 0. 2D 만들기(Python/Python)

문제 설명

정수 배열 num_list와 정수 n이 매개변수로 지정됩니다. 아래에 설명된 대로 solve 함수를 완성하여 num_list를 2차원 배열로 반환합니다.

num_list는 길이가 8인 (1, 2, 3, 4, 5, 6, 7, 8)이고 n은 2이므로 다음과 같이 num_list를 2*4 배열로 변경합니다. 2D로 변환할 때 num_list에서 요소를 분할합니다. n만큼 오버하고 2D 배열로 변경합니다.

번호 목록 N 결과
(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의 길이

I/O 예시

번호 목록 N 결과
(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) ((100, 95, 2), (4, 5, 6), (18, 33, 948))

I/O 예시 설명

I/O 예제 #1

num_list는 길이가 8인 (1, 2, 3, 4, 5, 6, 7, 8)이고 n이 2이므로 2 * 4 배열로 변경된다((1, 2), (3, 4) ), (5, 6), (7, 8)).

I/O 예제 #2

num_list는 길이가 9인 (100, 95, 2, 4, 5, 6, 18, 33, 948)이고 n이 3이므로 3*3 배열((100, 95, 2), (4, 5, 6), (18, 33, 948)).


코드

import numpy as np

def solution(num_list, n):
    answer = np.array(num_list).reshape(-1,n)
    return answer.tolist()

포인트

numpy 배열로 변환한 후 reshape를 사용했습니다.

응답 유형이 numpy.ndarray이므로 tolist()는 이를 목록으로 캐스팅하고 반환합니다.

reshape() 사용

numpy의 reshape(x, x)는 reshape(x 행, x 열)의 2차원 배열로 변환합니다.

l.reshape(2,6)
#(( 0  1  2  3  4  5)
# ( 6  7  8  9 10 11))

l.reshape(4,3)
# (( 0  1  2)
#  ( 3  4  5)
#  ( 6  7  8)
#  ( 9 10 11))

reshape(-1, integer)는 정수 열을 생성하고 자동으로 행을 할당합니다.

l = np.arange(12)
#l : (0 1 2 3 4 5 6 7 8 9)

l.reshape(-1, 4)
# (( 0  1  2  3)
#  ( 4  5  6  7)
#  ( 8  9 10 11))

l.reshape(-1, 6)
# (( 0  1  2  3  4  5)
#  ( 6  7  8  9 10 11))

reshape(정수, -1)도 사용할 수 있습니다.