본문 바로가기
백준

[백준] 10798번 : 세로읽기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 10. 8.
728x90
반응형

 

 

10798번: 세로읽기

총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

해당 문제는 입력받는 문자열을 2차원 배열로 저장하고 이를 출력하는 문제이다.

모든 문자열의 0번 인덱스부터 가장 긴 문자열의 마지막 인덱스까지 출력하면 된다.

하지만 더 짧은 문자열이 존재할 수 있고 이런 경우 더 이상 출력할 문자가 없으면 다음 문자열의 문자를 이어서 출력하면 된다.

 

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 총 5줄의 문자열을 입력받아 문자열마다 줄 바꿈 enter를 제거하고 각 문자열의 문자를 분리하여 리스트로 저장한다. String = list(list(map(str, sys.stdin.readline().rstrip())) for _ in range(5))
  3. 각 문자열에서 가장 긴 문자열의 길이를 저장한다. MAX = max(len(String[0]), len(String[1]), len(String[2]), len(String[3]), len(String[4]))
  4. 가장 긴 문자열의 크기만큼 반복하며 for i in range(MAX)
  5. 각 문자열을 세로 방향으로 읽는다. for j in range(5)
  6. 만약 해당 문자열의 읽어야 할 세로 문자 위치가 문자열의 크기를 넘어서면 if (len(String[j]) <= i)
  7. 출력할 문자가 더 이상 없으므로 출력을 건너뛰고 다음 문자열로 이동한다. continue
  8. 문자를 읽을 수 있으면 문자를 출력한다. print(String[j][i], end='')
반응형

3. 소스코드

import sys

String = list(list(map(str, sys.stdin.readline().rstrip())) for _ in range(5))

MAX = max(len(String[0]), len(String[1]), len(String[2]), len(String[3]), len(String[4]))
for i in range(MAX):
    for j in range(5):
        if (len(String[j]) <= i):
            continue

        print(String[j][i], end='')
728x90
반응형