본문 바로가기
백준 - 파이썬/단계별 - 7 (2차원 배열)

*[백준/파이썬] 10798번 세로읽기

by miiinn 2025. 5. 10.

 

[비효율적 코드]

# 세로읽기

words = []
max_column = 0 # 가장 긴 행의 열 개수, 즉 "최대 열 길이"를 저장하는 변수

for _ in range(5):
    tmp = list(input())
    words.append(tmp)
    if len(tmp) > max_column:
        max_column = len(tmp)

# 파이썬에서는 리스트가 비어있으면 False, 비어있지않으면 True
for i in range(max_column): # 열
    for j in range(5): # 행
        # 열(i)보다 현재 행(j)의 길이가 작을만 출력
        if i < len(words[j]):
            print(words[j][i], end='')

 

 

가장 애먹었던 부분은 i < len(words[j]) 부분이다.

 

훨씬 더 간단한 코드로 바꿀 수 있다.

 

words = [input() for _ in range(5)]

for i in range(15): # 한 줄에 최대 15개
    for j in range(5): # 총 5개의 행
        if i < len(words[j]):
            print(words[j][i], end='')

 


 

2차원 배열에서 len(arr)은 행 개수, len(arr[i])는 열 개수 반환

arr = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

print(len(arr))       # 출력: 3 (행의 개수)
print(len(arr[0]))    # 출력: 3 (열의 개수, 첫 번째 행의 길이)