강아지를 좋아하는 컴공생

백준 10798 세로읽기 (파이썬 / python) 본문

전공/백준, 프로그래머스

백준 10798 세로읽기 (파이썬 / python)

정인하이 2024. 2. 28. 08:18

 

다른 사람 코드(정답)

words = []
length = []
for _ in range(5):
	word = input()
	words.append(word)
	length.append(len(word))

rst=''
for i in range(max(length)): 
	for j in range(5):
		if i < length[j]:
			rst += words[j][i]

print(rst)

출처 : https://wondytyahng.tistory.com/entry/%EB%B0%B1%EC%A4%80-10798-%EC%84%B8%EB%A1%9C%EC%9D%BD%EA%B8%B0

 

 

실패한 내 코드

# 세로 읽은 문자 출력
# 행에 원소 개수가 최대 찾은 후 공백 부분을 -1로 채우기
# -1이 아닐 경우에만 append하기

# 행렬 입력받기
matrix = []
for _ in range(5):
    matrix.append(list(map(int,input().split())))

# 원소 최대 개수 찾기
max_len = len(matrix[0])
for i in range(1,5):
    if(max_len<len(matrix[i])):
        max_len = len(matrix[i]) 

# 행의 원소 개수가 최대 원소 개수보다 작을 경우 
# max_len이 될 때까지 append(-1)
for row in matrix:
    while len(row) < max_len:
        row.append(-1)

# 세로로 읽기
# -1가 아닌 경우에만 read.append()
read = []
for j in range(max_len):
    for i in range(5):
        if matrix[i][j] != -1:
            print(matrix[i][j],end='')

# 배열 → 문자열로 공백없이 변경(join)
print(''.join(map(str,read)))

 

최대 길이보다 작을 경우, -1을 추가했는데

그럴 필요가 없었다는 것을 알게 됐다.

 

행의 길이만큼, 읽을 수 있을 때까지만 읽으면 됐다.

for i in range(len(row))

 

for문이 낭자한 비효율적인 내 코드 ..

gpt를 돌려봐도 아직도 어디가 틀린건지 잘 모르겠다