본문 바로가기

Python(알고리즘,문제풀이)/BOJ (Bronze V)

10798번 / 세로읽기

728x90

📚문제

출처 : 백준 / 10798번 (https://www.acmicpc.net/problem/10798)

 

📝풀이

# 10798번 세로읽기
words = [input() for i in range(5)]

# words[i][j] 할 때 words[0][0], words[1][0], words[2][0]...으로 간다는 걸 생각하고 풀자
for j in range(15): # 문자열 최대길이 (15)
    for i in range(5):
        if j < len(words[i]): 
        
        # 예를 들어 ,문자열 길이(=j) 4일 때, len(words[i])=4라면 
        # 해당 문자열의 words[i][j]는 출력하지 않음(ex afzz)
        
        # ex AABCDD
        #    afzz
        #    09121
        #    a8EWg6
        #    P5h3kx
        
            print(words[i][j], end="")

 

진짜 어렵다..... 몇시간 동안 붙들다가 구글링해서 해답 코드 봐도 이해가 잘 안 됐다.

브론즈 1인데 이정도라니... 풀면서 현타가 되게 많이왔다.

 

# 다른 문자열의 길이보다 작은 행의 빈 곳은 출력하지 않기 위한 코드
if j < len(words[i]):

이런 류의 코드 짜는 생각이 잘 나지 않는 것 같다.

익숙해지고 나면 자연스럽게 머릿속에서 떠오르기도 하고 이해도 빨리 되서 잘 풀 수 있겠지......?

 

우선 나중에  봐도 이해할 수 있게 최대한 쉽게 작성하고 주석도 달아놓았다.

(다른 풀이들은 아직 엄두가 나지 않는다...)


+구글링 하다가 그나마 이해가 좀 되는 2차원 배열 관련 내용을 가져왔다

 2차원 배열 출력

 

#1. 2차원 배열

list_2d = [["A", "B", "C", "D", "E" ],
           ["1", "2", "3", "4", "5" ],
           ["a", "b", "c", "d", "e" ]]

3행 5열 2차원 배열 (출처 :https://ymd-memo.tistory.com/54)

#2. 가로출력

# 행 순서(가로)대로 출력하고 싶다면 행 수를 처음 반복문으로 설정!
# 반복문 처리 시 행은 고정, 열이 변경됨 

for row in range(3):     # 행 수
    for col in range(5): # 열 수  
        print(f'list_2d([{row}][{col}]) = {list_2d[row][col]}', end=" ")
    print()
-----------------------------------------------------------------------------------------------------
list_2d([0][0]) = A list_2d([0][1]) = B list_2d([0][2]) = C list_2d([0][3]) = D list_2d([0][4]) = E 
list_2d([1][0]) = 1 list_2d([1][1]) = 2 list_2d([1][2]) = 3 list_2d([1][3]) = 4 list_2d([1][4]) = 5 
list_2d([2][0]) = a list_2d([2][1]) = b list_2d([2][2]) = c list_2d([2][3]) = d list_2d([2][4]) = e

 

# 3. 세로출력

# 열 순서(세로)대로 출력하고 싶다면 열 수를 처음 반복문으로 설정!
# 전환행렬 T와 같음

for col in range(5):     # 열 수
    for row in range(3): # 행 수
        print(f'list_2d([{row}][{col}]) = {list_2d[row][col]}', end=" ")
    print()
-------------------------------------------------------------------------
list_2d([0][0]) = A list_2d([1][0]) = 1 list_2d([2][0]) = a 
list_2d([0][1]) = B list_2d([1][1]) = 2 list_2d([2][1]) = b 
list_2d([0][2]) = C list_2d([1][2]) = 3 list_2d([2][2]) = c 
list_2d([0][3]) = D list_2d([1][3]) = 4 list_2d([2][3]) = d 
list_2d([0][4]) = E list_2d([1][4]) = 5 list_2d([2][4]) = e

 

출처 : https://ymd-memo.tistory.com/54

728x90

'Python(알고리즘,문제풀이) > BOJ (Bronze V)' 카테고리의 다른 글

1809번 / Moo  (0) 2023.07.10
2563번 / 색종이  (0) 2023.07.08
2566번 / 최댓값  (0) 2023.07.06
2738번 / 행렬 덧셈  (0) 2023.07.05
25206번 / 너의 평점은  (0) 2023.07.04