출처
정답
import sys
words = []
for i in range(5):
word = sys.stdin.readline().rstrip()
words.append(word)
for i in range(15):
for j in range(5):
if i < len(words[j]):
print(words[j][i], end="")
simplefied soultion for understanding
import sys
words = [["*" for i in range(15)] for j in range(5)]
for i in range(5):
word = sys.stdin.readline().rstrip()
for j in range(len(word)):
words[i][j] = word[j]
for i in range(15):
for j in range(5):
if words[j][i] != "*":
print(words[j][i], end="")
문제
입출력
풀이
0. 전략
구현전략
1) 2차원 배열 세로 출력한다
2) 출력할 때 빈칸은 건너 뛰도록 한다
1. 문제/입력값에 의한 초기 설정
# 배열에 문자열을 입력한다
words = []
for i in range(5):
word = sys.stdin.readline().rstrip()
words.append(word)
# words = ["AABCDD", "afzz", "09121", "a8EWg6", "P5h3kx"]
## simplefied soultion for understanding
# 입력받은 문자열을 저장할 2차원 배열 선언
words = [["*" for i in range(15)] for j in range(5)]
# 다섯 줄을 입력으로 받아서
for i in range(5):
word = sys.stdin.readline().rstrip()
# 2차원 배열의 각 인덱스에 저장한다
for j in range(len(word)):
words[i][j] = word[j]
# words = [["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", "*", "*", "*", "*", "*", "*", "*", "*", "*"],
2. 문자열 세로 출력 알고리즘
# 문자열의 최대 길이만큼
for i in range(15):
# 5개의 행을 순회하며
for j in range(5):
# out of range 방지를 위해
# 문자열의 길이보다 열 index가 작을 때 #
if i < len(words[j]):
# 문자를 공백 없이 출력하라
print(words[j][i], end="")
## simplefied soultion for understanding
# 2차원 배열의 열의 크기 만큼
for i in range(15):
# 2차원 배열의 행의 크기를 순회하며
for j in range(5):
# 입력값으로 들어올 수 없는 "*" 이 아닌 경우
if words[j][i] != "*":
# 문자를 공백 없이 출력하라
print(words[j][i], end="")
3. 정답 출력
# 문자를 공백 없이 출력하라
print(words[j][i], end="")
2차원 배열 출력하기
1) 2차원 배열
list_2d = [["A", "B", "C", "D", "E" ],
["1", "2", "3", "4", "5" ],
["a", "b", "c", "d", "e" ]]
2) 가로 출력
for i in range(3): # 행 # 반복문 1번에 i 번째 행을 처리
for j in range(5): # 열 # 반복문 1번에 i 번째 행의 j 열을 출력한다
print(f'list_2d([{i}][[{j}] = {list_2d[i][j]}', end=" "]
print()
# 반복문 처리 시 행은 고정, 열이 변경됨
# A([0][0]) B([0][1]) C([0][2]) D([0][3]) E([0][4])
# 1([1][0]) 2([1][1]) 3([1][2]) 4([1][3]) 5([1][4])
# a([2][0]) b([2][1]) c([2][2]) d([2][3]) e([2][4])
3) 세로 출력
for i in range(5): # 열 # 반복문 1번에 i 번째 열을 처리 ①
for j in range(3): # 행 # 반복문 1번에 j 번째 행을 처리 ②
print(f'{list_2d[j][i]}([{j}][{i}])', end=" ")
print()
# 반복문 처리 시 열은 고정, 행이 변경됨
# A([0][0]) 1([1][0]) a([2][0])
# B([0][1]) 2([1][1]) b([2][1])
# C([0][2]) 3([1][2]) c([2][2])
# D([0][3]) 4([1][3]) d([2][3])
# E([0][4]) 5([1][4]) e([2][4])
'알고리즘 > 백준' 카테고리의 다른 글
백준 1018번 체스판 다시 칠하기 (Python) (0) | 2023.03.29 |
---|---|
백준 4673번 셀프 넘버 (Python) (0) | 2023.03.26 |
백준 11047번 동전 0 (Python) (0) | 2023.03.24 |
백준 5585번 거스름돈 (Python) (0) | 2023.03.23 |
백준 10812번 바구니 순서 바꾸기 (Python) (0) | 2023.03.23 |