백준 10798 (세로읽기) - Python

김종언·2024년 1월 13일
0

백준

목록 보기
4/18

문제

내가 생각한 해결방법:
그냥 이것도 이차원배열 만들고 index에 따라 출력하면 될 것 같다. 단어 글자 수에 따라서 반복문을 어떻게 돌릴지, 빈 칸을 어떻게 뛰어넘을 것인지가 포인트인듯.

풀이

전체 코드

list = [input() for _ in range(5)]
longest = max([len(i) for i in list])
result = ''
for i in range(longest):
    for j in range(len(list)):
        try:
            result += list[j][i]
        except IndexError:
            continue

print(result)

코드 풀이

list = [input() for _ in range(5)]
longest = max([len(i) for i in list])

먼저 input을 각각 요소로 하는 list를 작성했다.

반복문을 몇번 반복해야 할까 고민하다가 우리는 결국 세로로 글자를 훑어야 하기 때문에 가로로 가장 긴 단어의 길이만큼 반복하면 되겠다 싶었다.

result = ''
for i in range(longest):
    for j in range(len(list)):
        try:
            result += list[j][i]
        except IndexError:
            continue

print(result)

다음으로는 리스트의 단어 갯수만큼 세로로 읽어줘야했다. list[j][i]로 한번 반복할 때마다 세로로 내려가면서 글자를 result에 추가시켜줬다.

아무래도 제일 포인트는 빈 칸을 넘기는 방법이었다. list에서 벗어나는 index를 입력하면 아예 Error가 나게된다. 그래서 try, except구문으로 IndexError발생시 그 반복문을 continue하게 만들었다.

쌓여진 result를 출력하면 끝!

코멘트.

재밌었다. 내가 생각한대로 딱딱 들어맞아서 기분이 좋았다. 다른 사람들 코드보니까 효율면에서도 괜찮았던거 같다. try, except구문을 저번에 배우고 딱 생각이 나서 쓴게 뿌듯하다. 다음 들어와.

profile
나는 김종언이다.

0개의 댓글