내가 생각한 해결방법:
그냥 이것도 이차원배열 만들고 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구문을 저번에 배우고 딱 생각이 나서 쓴게 뿌듯하다. 다음 들어와.