빈칸 없는 1자 이상 15자 이하의 글자가 5줄로 주어질 때,
각 글자를 세로로 읽어 공백 없이 출력하는 문제이다.
(글자는 'A'~'Z', 'a'~'z', '0'~'9'의 조합으로 구성된다.)
아래와 같이 모든 글자의 길이가 같은 경우도 있지만,
ABCDE
abcde
01234
FGHIJ
fghij
아래와 같이 모든 글자의 길이가 같지 않은 경우도 있다.
AABCDD
afzz
09121
a8EWg6
P5h3kx
그래서 각 글자의 길이를 고려해야 하며,
반복문(for)을 통해 세로로 읽은 문자를 출력할 때,
현재 인덱스가 해당 글자의 길이를 넘어서는 경우를 따로 처리해야 한다.
5개의 글자를 입력 받는 과정에서..
max_length라는 변수를 통해 가장 길이가 긴 글자의 길이를 저장했다.
그리고 현재 탐색 중인 글자(words[j])의 길이가,
출력하고자 하는 세로 위치(i + 1)보다 작으면 출력 없이 넘어가고,
그렇지 않다면 해당 문자를 출력하도록 코드를 짰다.
여기서 세로 위치 인덱스(i)는 0부터 max_length - 1까지의 값을 가지므로,
i + 1의 값과 len(words[j])를 비교해야 한다.
전체 코드(정답)는 다음과 같다.
# 10798
import sys
words = []
max_length = 1
for _ in range(5):
user_input = sys.stdin.readline().rstrip()
words.append(user_input)
if len(user_input) > max_length:
max_length = len(user_input)
# print(words, max_length)
for i in range(max_length):
for j in range(5):
if len(words[j]) < (i + 1):
continue
else:
print(words[j][i], end='')