🥉 Bronze1: 세로읽기
https://www.acmicpc.net/problem/10798
✅ 정답풀이
import sys
input=sys.stdin.readline
length=[]
words=[]
#input 리스트 생성
for _ in range(5):
word=list(input().strip())
words.append(word)
length.append(len(word))
result=''
#row 순회하면서, 각 i번째 글자 result에 추가
for i in range(max(length)):
for j in range(5):
if i<length[j]: #각 단어 길이가 다르기 때문
result+=words[j][i]
print(result)
메모리 | 실행시간 |
31120 | 44ms |
세로줄로 하나씩 인덱스를 꺼내면서 아무런 조건을 걸어주지 않으면, 단어의 길이가 다르기 때문에 indexError가 발생한다.
단어의 수가 15개까지만 주어지기 때문에, 처음엔 빈배열을 5X15로 만들어서 풀어볼까 했지만 좀 더 효율적으로 풀어보고 싶었다.
이 문제의 포인트는 각 단어의 길이가 다르기때문에 각 단어의 길이를 input리스트를 생성할때 길이를 위한 리스트를 만들어주고,
이중 for문으로 col, row를 순회하는데, index에러 방지를 위해 저장해둔 길이 리스트를 활용해 i<length[j]라는 조건을 이용한다.
이중 for문이 익숙치 않다보니, 외부 내부 for문 위치를 어떻게 해야할지 아직 헷갈려서 각 i번째 글자를 뽑아서 순회하는데 시간이 꽤나 걸렸는데 비슷한 문제를 또 풀어보니 그래도 이제 좀 적응이 된 것 같다!