공부하기/백준

[Python] 백준 풀기 10798 - 세로읽기

XEV 2023. 3. 1. 23:33

파이썬 백준 10798번

브론즈 1

https://www.acmicpc.net/problem/10798

 

10798번: 세로읽기

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

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 문자열

 

 

 

 

 

문제 풀기

주어진 문자열을 리스트에 각각 저장하고 리스트의 길이가 넘지 않는 범위에서 순서대로 원소를 빼내어 새로운 문자열을 만든다.

2 차원 리스트를 이용하지 않고 5 개의 리스트를 간편하게 만들고 입력받기 위해 globals() 함수를 처음으로 사용해 보았다.

 

globals()['line_' + str(i)]

위의 형식으로 line_1, line_2, line_3, line_4, line_5 를 지정해 줄 수 있다.

 

5 개의 리스트에 문자열을 저장하고 for loop 을 돌리면서 조건문을 리스트의 길이보다 i 가 작을 때에만 문자를 합하도록 지정한 후 result 문자를 출력한다.

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline


def fnVerticalReading():
    result = ""
    
    for i in range(15):
        if len(line_1) >= i + 1:
            result += line_1[i]
        if len(line_2) >= i + 1:
            result += line_2[i]
        if len(line_3) >= i + 1:
            result += line_3[i]
        if len(line_4) >= i + 1:
            result += line_4[i]
        if len(line_5) >= i + 1:
            result += line_5[i]
    
    print(result)


if __name__ == "__main__":
    for i in range(1, 6):
        globals()['line_' + str(i)] = list(map(str, inputdata().strip()))
        print(f"line_{i} == {globals()['line_' + str(i)]}")  ## TEST PRINT.
    
    fnVerticalReading()



'''
AABCDD
afzz
09121
a8EWg6
P5h3kx

line_1 == ['A', 'A', 'B', 'C', 'D', 'D']
line_2 == ['a', 'f', 'z', 'z']
line_3 == ['0', '9', '1', '2', '1']
line_4 == ['a', '8', 'E', 'W', 'g', '6']
line_5 == ['P', '5', 'h', '3', 'k', 'x']

Aa0aPAf985Bz1EhCz2W3D1gkD6x
'''