[백준] 10798: 세로읽기 - 파이썬[python]

다인·2024년 8월 12일

백준

목록 보기
28/112
post-thumbnail

리스트의 끝을 어떻게 하면 좋을까 생각하다가, 해당 인덱스가 null이면 출력을 안하게 하려고 했다. 그런데 애초에 없는 인덱스이기에 접근이 불가능해 검사조차 할 수 없다. 고민하다가 결국 검색을 했는데 길이를 사용하더라! 다음에는 검색하지 말고 끝까지 생각해내겠당,,

코드

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

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

시행착오

여기서 몇 가지 시행착오가 있었다.

  1. 처음에는
arr = [input() for i in range(5)]

대신에

arr = []
for i in range(5):
    lst = input()
    arr.append(lst)

이렇게 썼었다.
한 줄로 편하게 작성가능하다니! 앞으로 저렇게 써야징

  1. 두 번째로, 아직 파이썬의 개념이 제대로 박혀있지가 않은 건지.. 습관처럼 input().split()으로 썼었다. 하지만 얘네는 공백이 없기 때문에
    split()을 쓸 필요가 없고, input()은 문자열로 받는 반면 split()은 리스트로 반환하기 때문에 2차원 배열로 만들어서 [i][j]로 접근하려면 split()을 안 쓰는 게 맞다.
  • input().split()로 받고 print(*arr)를 해보면
    ['ABCDE']['abcde'] ['01234']['FGHIJ'] ['fghij']
    이렇게 출력된다.
  • input()로 받고 print(*arr)를 해보면
    ABCDE abcde 01234 FGHIJ fghij
    이렇게 출력된다.
  1. j를 먼저 쓰냐 i를 먼저 쓰냐의 헷갈림.. 열을 동일하게 하고 행을 바꿀 것이기 때문에 열을 먼저 for문에 담고 다음 for 문에 행을 담는 게 맞다.

  2. 가장 중요한

if len(arr[i]) > j

각 행의 길이를 재고, 열을 세는 j가 해당 길이보다 작을 때까지 출력을 반복하는 것이다. 여기서 또 조심할 포인트는 >= 가 아닌 >! 길이이기 때문!

결과

0개의 댓글