프로그래머스 | 2차원으로 만들기 [파이썬 python]

2023. 3. 5. 18:49·Algorithm/프로그래머스
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

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

 

1차원 배열 num_list가 주어지면 n차원 배열로 바꾸는 문제이다.

단순히 n 개씩 잘라 answer에 추가하면 쉽게 풀 수 있다.

이때 n개씩 자르는 부분을 슬라이싱으로 구현해야 하는데 나는 기존 리스트는 건들지 않고 answer에 추가하려 했기 때문에 n*i부터 n*(i+1)로 작성했다.

문제에서 num_list는 n의 배수라고 알려주었기 때문에 for문의 범위를 len(num_list)//n으로 하였다. 이때 /를 사용하면 정수형태로 나오기 때문에 for문에서 오류가 발생하므로 //을 사용하여 정수인 몫을 범위로 지정해주어야 한다.

 

문제에서 주어지는 예시로 살펴보면 num_list = [1, 2, 3, 4, 5, 6, 7, 8]를 n = 2 차원으로 바꿔  answer = [[1, 2], [3, 4], [5, 6], [7, 8]] 와 같은 결과를 만들어내야 하는 것이다.

이때 for문은 0부터 4(= 8//2)까지 돌게 된다.

1) i=0 → n*i=2*0,  n*(i+1)=2*1 → num_list[0:2] 

 

다른 방법 - numpy 이용

import numpy as np

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

처음에는 numpy의 reshape 함수를 사용하려 했으나 ndarray를 list 형태로 바꾸는 함수를 몰라서 return 부분에서 계속 헤맸다.

.tolist()를 사용하면 ndarray를 list 형태로 바꿀 수 있다.

반응형
저작자표시 (새창열림)
'Algorithm/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | 배열 회전시키기 [파이썬 python]
  • 프로그래머스 | 공 던지기 [파이썬 python]
  • 프로그래머스 | 특정 문자 제거하기 [파이썬 python]
  • 프로그래머스 | 최빈값 구하기 [파이썬 Python]
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (242)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (43)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
프로그래머스 | 2차원으로 만들기 [파이썬 python]

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.