칠판에 붙여진 단어들이 주어질 때, 의석이가 세로로 읽은 순서대로 글자들을 출력하는 문제.
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번째 값이 그 행의 열의 개수 안에 있을 때만 읽도록 했다.
'코딩테스트 > SWEA' 카테고리의 다른 글
| [Python, 파이썬] SWEA 4579. 세상의 모든 팰린드롬 2 (1) | 2024.11.11 |
|---|---|
| [Python, 파이썬] SWEA 4522. 세상의 모든 팰린드롬 (0) | 2024.11.11 |
| [Python, 파이썬] SWEA 1961. 숫자 배열 회전 (0) | 2024.11.11 |
| [Python, 파이썬] SWEA 6485. 삼성시의 버스 노선 (0) | 2024.11.11 |
| [Python, 파이썬] SWEA 1238. [S/W 문제해결 기본] 10일차 - Contact (0) | 2024.11.11 |