본문 바로가기
PYTHON

파이썬 프로그래머스 코딩테스트 연습 2차원 만들기_.tolist()

by jnhn 2023. 5. 9.

문제)정수 배열 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차원 배열로 변경합니다.

오답) np.array().reshape(a,b)

 

import numpy as np
def solution(num_list, n):
    b = len(num_list)//n
    a = np.array(num_list).reshape(b,n)
    print(a)

얼마전에 딥러닝 공부하면서 배운 numpy 의 np.array().reshape(a,b)를 활용해서 풀라그랬는데

분명 제대로 답은 나오는데 형식이 틀렸다니까 어찌할 도리가 없었다 분명 뭐가 있을텐데 어떻게 검색할지도 몰라서 일단 다르게 풀이해보았다. 

정답1)

def solution(num_list, n):
    a = []
    for i in range(0, len(num_list), n):
        a += [num_list[i:i+n]]
    return a

그냥 리스트에 담아서 풀어보았다. 사실이게 제일 담백하게 푼거 같긴하지만 이번에 배운 numpy를 꼭 활용해보고 싶었다.

정답2)

import numpy as np
def solution(num_list, n):
    b = len(num_list)//n
    a = np.array(num_list).reshape(b,n)
    return a.tolist()

역시 형식이 참 중요하구나 리스트 형식으로 만들어주는 .tolist()로 간편하게 해결!!!!! 따지자면 np.array_리스트를 넘파이로 바꿔주는 함수 와 정반대의 역할을 하는셈이다.

numpy
np.array(리스트).reshape(숫자1, 숫자2)
np.array(리스트)
리스트를 숫자1*숫자2의 행렬(넘파이)로 형식을 바꿔줌
리스트를 넘파이형식으로바꿔줌
넘파이.tolist() 넘파이의 형식을 리스트로 바꿔줌