<로직 고민>
- 일단...파이썬 2차원 배열 검색....
array = [[0 for col in range(11)] for row in range(10)]
- 이렇게 하면 11열 10행의 2차원 배열이 생성된다고 한다
- pprint를 쓰면 아래와 같은 모양으로 출력할 수 있다
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
- 그럼 여기서 col in 다음에는 n이 들어가면 되고 row in 다음에는 len(num_list)/n 값이 들어가면 되는군
- for문이 3번 있어야 하는 건가....? 일단 num_list를 돌려야 하는데....
- 후..........모르겠다 포기
- 검색하다가 정답 스포당했다
<완성된 코드>
def solution(num_list, n):
answer = []
for i in range(len(num_list)//n):
answer.append(num_list[n*i : n*(i+1)])
return answer
- for문은 이해가 된다 num_list 길이에서 n을 나눈 몫이 행 개수가 되고, n은 열 개수가 된다
- 이차원 배열을 어떻게 해야 할지가 문제였는데 그냥 1차원 리스트에 리스트를 append 하면 2차원 배열이 되는 거다..쩝
<다른 사람 풀이>
- 천재풀이1
def solution(num_list, n):
answer = []
for i in range(0, len(num_list), n):
answer.append(num_list[i:i+n])
return answer
- 내가 스포당한 정답과 비슷하다
- 더 간단하고 풀이가 더 잘 보인다!
- 은근 간단한 문제였는데 2차원 배열을 어떻게 만들지에 휩싸여서 생각을 못했다..ㅜ
- 천재풀이2
import numpy as np
def solution(num_list, n):
li = np.array(num_list).reshape(-1,n)
return li.tolist()
- numpy 라는 라이브러리가 있다
- Numpy 많이쓰는 함수 정리 (aruie.github.io)
- 정리가 되어 있는 곳에서 쭉 보긴 했는데...뭔가 어렵다....뭔 말이지...
- numpy 없어도 풀리는데 일단 몰라도 되는 거 아닐까..?
- 심지어 이건 pip install numpy 해서 라이브러리를 다운받아야 한다구...!