코딩테스트/SWEA
[Python, 파이썬] SWEA 5356. 의석이의 세로로 말해요
알코딩
2024. 11. 11. 21:11
칠판에 붙여진 단어들이 주어질 때, 의석이가 세로로 읽은 순서대로 글자들을 출력하는 문제.
T = int(input()) # 테스트케이스의 개수 T
for test_case in range(1, T+1):
N = 5
matrix = [input() for i in range(5)]
all_length = [len(i) for i in matrix] # 모든 길이 저장
length = max(all_length) # 최대 길이만
print("#%d " %(test_case), end='')
for i in range(length): # 최대 열의 길이
for j in range(N): # 행 반복
if(len(matrix[j]) > i): # 열의 개수 안에 있을 때
print(matrix[j][i], end='')
print()
[문제풀이]
A A B C D D
a f z z
0 9 1 2 1
a 8 E W g 6
P 5 h 3 k x
이렇게 입력받은 배열을 i와 j 위치를 바꿔서 세로로 읽으면 되는데, 이때 배열 크기는 각 행마다 제멋대로다.
all_length = [len(i) for i in matrix] # 모든 길이 저장
length = max(all_length) # 최대 길이만
그래서 각 행의 길이 중 최대 길이를 구해 그걸 for의 반복 변수로 삼는다.
그런데 이때 이대로 돌리면 최대 길이보다 작은 행을 읽을 때는 IndexError가 뜬다.
if(len(matrix[j]) > i): # 열의 개수 안에 있을 때
print(matrix[j][i], end='')
그래서 현재 읽을 matrix[j]행의 i번째 값이 그 행의 열의 개수 안에 있을 때만 읽도록 했다.