[Python TIL] 2차원 리스트(배열) 입력받는 다양한 방법

3 min read
Python에서 2차원 리스트(행렬, matrix)를 입력받는 방법을 정리해볼게요.
입력 방식은 여러 가지가 있으며, 그중 중간에 빈 줄이 있는 경우를 처리하는 방법도 함께 알아보겠습니다! 🚀
✅ 2차원 리스트(배열) 입력받는 기본적인 방법
🔹 방법 1: for
문을 사용하여 고정된 크기의 행렬 입력받기
입력 크기가 정해져 있다면 가장 직관적인 방법입니다.
matrix = [list(map(int, input().split())) for _ in range(3)]
print(matrix)
🔹 입력 예시:
1 2 3
4 5 6
7 8 9
🔹 출력:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
✅ 사용 용도: 행 개수가 정해져 있을 때 유용
🔹 방법 2: sys.stdin.read
()
를 사용하여 가변적인 크기의 입력 처리
import sys
data = sys.stdin.read().strip().split("\n") # 여러 줄 입력받기
matrix = [list(map(int, row.split())) for row in data]
print(matrix)
🔹 입력 예시:
1 2 3
4 5 6
7 8 9
🔹 출력:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
✅ 사용 용도: 입력 개수를 미리 모를 때 사용
🚀 ✅ 빈 줄이 포함된 2차원 리스트 입력받기
🔹 문제: 입력값에 중간에 빈 줄이 있을 때, 이를 무시하고 행렬을 읽어야 한다.
1 2 3
4 5 6
7 8 9
2 3 4
5 6 7
8 9 10
💡 이때, 빈 줄을 무시하고 두 개의 행렬을 제대로 분리해서 입력받는 방법이 필요합니다!
✅ 해결 방법 1️⃣: while
루프를 활용하여 빈 줄 무시
matrix1 = []
matrix2 = []
# 첫 번째 행렬 입력 (빈 줄 무시)
while len(matrix1) < 3:
row = input().strip()
if row: # 빈 줄이 아니면 추가
matrix1.append(list(map(int, row.split())))
# 두 번째 행렬 입력 (빈 줄 무시)
while len(matrix2) < 3:
row = input().strip()
if row: # 빈 줄이 아니면 추가
matrix2.append(list(map(int, row.split())))
print(matrix1)
print(matrix2)
🔹 입력 예시:
1 2 3
4 5 6
7 8 9
2 3 4
5 6 7
8 9 10
🔹 출력:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[2, 3, 4], [5, 6, 7], [8, 9, 10]]
✅ 사용 용도: 빈 줄을 건너뛰면서 일정 개수의 행렬을 입력받고 싶을 때 유용
✅ 해결 방법 2️⃣: sys.stdin.read
()
를 사용하여 한 번에 입력받고 빈 줄 제거
import sys
data = sys.stdin.read().strip().split("\n") # 전체 입력을 받아 줄 단위로 분할
data = [row.strip() for row in data if row.strip()] # 빈 줄 제거
matrix1 = [list(map(int, data[i].split())) for i in range(3)]
matrix2 = [list(map(int, data[i + 3].split())) for i in range(3)]
print(matrix1)
print(matrix2)
🔹 입력 예시:
1 2 3
4 5 6
7 8 9
2 3 4
5 6 7
8 9 10
🔹 출력:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[2, 3, 4], [5, 6, 7], [8, 9, 10]]
✅ 사용 용도: 입력 개수를 모를 때, 한 번에 모든 데이터를 처리하고 싶을 때 사용
🎯 어떤 방법을 선택할까?
방법 | 특징 | 장점 | 단점 |
for 문 사용 | 입력 개수 고정 | 직관적, 간단함 | 유동적인 입력 처리 어려움 |
sys.stdin.read () | EOF까지 입력받기 | 대량 데이터 처리에 적합 | 모든 데이터를 한꺼번에 처리해야 함 |
while 루프 | 빈 줄 무시 가능 | 유연한 입력 처리 | 코드가 길어질 수 있음 |
🔥 정리
입력 개수가 정해져 있다면 →
for
문 사용입력 개수가 미정이면 →
sys.stdin.read
()
활용빈 줄을 포함한 입력 처리 →
while
루프 orsys.stdin.read
()
+strip()
0
Subscribe to my newsletter
Read articles from KiwiChip directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

KiwiChip
KiwiChip
I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).