본문 바로가기
Backjoon

Backjoon - problem 10798 세로읽기 파이썬

by ddahu 2023. 4. 27.

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

 

10798번: 세로읽기

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

www.acmicpc.net

 

 

 

  • 입력 과 출력

 

 

  • 해설
myList = [input() for _ in range(5)]  
max_len = max(len(s) for s in myList)  
for i in range(max_len):
    for j in range(5):
        if i < len(myList[j]): 
            print(myList[j][i], end='')
print()

 

 

이 문제는 너무 어렵게 생각하여 오래걸렸던 문제이다... 사실 쉽게 생각하면 쉽게 풀었지만

첫 접근은 각 2차원 배열에 0번 인덱스를 슬라이싱 하여 증가하면서 newString에 추가를 할려했으나 첫 테스트코드는 통과하지만 두번째 테스트코드는 각각 문자열의 길이가 달라 에러가 발생하는 문제가 생겼었다.

 

그래서 다시 생각 해보니 각 각 가장긴 문자열의 길이를 구하고 문자열이 가지고있는 글자를 체크 하여 출력하는 식으로 풀어보니 바로 풀렸다.

 

- 구체적인 주석코드

myList = [input() for _ in range(5)]  # 각 줄의 입력을 문자열로 받음
max_len = max(len(s) for s in myList)  # 다섯 개의 문자열 중 가장 긴 문자열의 길이를 구함
for i in range(max_len): # 최대 길이만큼 반복
    for j in range(5): # 2차원 5번 반복
        if i < len(myList[j]):  # 현재 문자열이 i번째 글자를 가지고 있다면
            print(myList[j][i], end='')  # 해당 글자를 출력함