본문 바로가기
IT/CodingTest

[programmers] '2차원으로 만들기' 문제해설

by Echinacea 2025. 3. 18.
반응형

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/120842

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

📝 문제 설명

정수 배열 num_list와 정수 n이 주어질 때, num_list를 n개의 요소씩 묶어 2차원 리스트로 변환하는 프로그램을 작성하세요.

 

 

🔹 제한사항

조건 / 설명

num_list의 길이 n의 배수 (즉, 나누어떨어짐)
0 ≤ num_list의 길이 ≤ 150 최대 150개의 원소 포함 가능
2 ≤ n < 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]]
100 95 2 4 5 6 18 33 948 3 [[100, 95, 2], [4, 5, 6], [18, 33, 948]]

 

 

✅ 문제 쉽게 이해하기

num_list를 n개씩 나누어 2차원 리스트로 변환해야 함

 

🔹 예제 1

num_list = [1, 2, 3, 4, 5, 6, 7, 8]
n = 2

👉 2개씩 묶으면:

[[1, 2], [3, 4], [5, 6], [7, 8]]

 

🔹 예제 2

num_list = [100, 95, 2, 4, 5, 6, 18, 33, 948]
n = 3

👉 3개씩 묶으면:

[[100, 95, 2], [4, 5, 6], [18, 33, 948]]

 

 

✅ 해결 방법 (리스트 컴프리헨션 없이 구현)

def solution(num_list, n):
    result = []  # 결과를 저장할 빈 리스트 생성
    for i in range(0, len(num_list), n):  # 0부터 n 간격으로 반복
        result.append(num_list[i:i+n])  # i부터 i+n까지 자른 리스트를 추가
    return result

 

🔹 코드 동작 과정

📌 num_list = [1, 2, 3, 4, 5, 6, 7, 8], n = 2일 때:

i 값  / num_list[i:i+n] / result 리스트

0 [1, 2] [[1, 2]]
2 [3, 4] [[1, 2], [3, 4]]
4 [5, 6] [[1, 2], [3, 4], [5, 6]]
6 [7, 8] [[1, 2], [3, 4], [5, 6], [7, 8]]

 

 

🔹 코드 핵심 개념

✔ num_list[i:i+n] → i부터 i+n까지 슬라이싱하여 리스트로 만듦
✔ append() → result 리스트에 추가
최종적으로 result를 반환하면 2차원 리스트 완성! 🚀


 

 

📌 실행 예제

print(solution([1, 2, 3, 4, 5, 6, 7, 8], 2))
# [[1, 2], [3, 4], [5, 6], [7, 8]]

print(solution([100, 95, 2, 4, 5, 6, 18, 33, 948], 3))
# [[100, 95, 2], [4, 5, 6], [18, 33, 948]]

결론: 리스트 컴프리헨션 없이도 반복문을 활용하여 2차원 리스트 변환 가능

반응형

댓글