본문 바로가기

백준

[BaekJoon/Python3] 백준 10798번 : 세로읽기

 

 

[문제]

https://www.acmicpc.net/problem/10798

 

 

 

[아이디어]

# 2차원 배열 선언하고 입력받기
# 사이즈는 1<= n <= 15
# 배열을 세로로 읽기

 

* 놓친 아이디어 : 행이 5개인건 고정(입력을 5줄로 받음)

 

 

[풀이]

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

for j in range(15):
    for i in range(5):
        if j < len(words[i]):
            print(words[i][j], end='')

 

<코드 설명>

- 다섯 개의 단어를 입력받는다. *리스트 컴프리헨션으로 리스트를 간결하게 만든다.

- for j in range(15): 세로로 읽기 위해 각 열의 인덱스 'j'를 0부터 14까지 반복한다.

- for i in range(5): 다섯 개의 단어를 순회하며 각 단어의 j번째 글자를 읽는다.

- if j < len(words[i]): 현재 단어 'words[i]'의 길이가 'j'보다 클 때만 글자를 읽도록 한다. = 단어의 길이보다 큰 인덱스에 접근하지 않도록 방지

- end=''는 줄바꿈 없이 이어서 출력하게 함

 

- 예외 처리가 키포인트(각 행(단어)별로 0~15까지 가변 길이를 갖고 있음)

- 예외 처리를 힘들게 할 필요 없이 행의 최대 길이(len(words[i]))가 현 iteration횟수보다 낮으면 출력하는 방식으로 진행