백준 10798

jeonghens·2024년 1월 30일

알고리즘: BOJ

목록 보기
13/125

빈칸 없는 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='')
profile
알고리즘이나 SQL 문제 풀이를 올리고 있습니다. 피드백 환영합니다!

0개의 댓글