관리 메뉴

100세까지 코딩

[백준] 10798번 세로읽기 (파이썬) 본문

코딩테스트/파이썬

[백준] 10798번 세로읽기 (파이썬)

100세까지 코딩 2024. 1. 12. 16:54
 

10798번: 세로읽기

총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’

www.acmicpc.net

문제

나의 생각
  • 2차원 배열을 생성하여 한 줄의 단어들을 list로 입력받는다.
  • 최대 15글자 이므로 col을 15라고 생각하고 탐색
  • 5개의 단어들을 입력받으므로 row 5라고 생각하고 탐색 
  • 세로로 읽어야하니 2중 반복문 중 안의 반복문이 row에 대해 한다. ex) matrix [0][0] -> matrix [1][0] -> matrix [2][0]...
  • 세로로 읽어가며 temp_list에 추가해 나간다.
  • 길이가 15글자가 안 되는 단어가 나오면 오류가 발생할 것인데, 그때 continue로 무시하고 진행한다.
  • list를 join() 함수를 써서 문자열로 만든다.
나의 풀이
matrix = [list(input()) for j in range(5)]
temp_list = []
for col in range(15):
    for row in range(5):
        try:
            temp_list.append(matrix[row][col])
        except IndexError:
            continue

print("".join(temp_list))
참고
1. 배열의 열이 각각 다른 것을 톱니바퀴 배열이라고 부른다.
2. [list(input) for i in range(k)] 형태로 톱니바퀴 배열을 만들 수 있다.
3. list(문자열)을 하면 연속된 문자열을 한 글자씩 끊을 수 있다.
4. append()는 리스트에 요소 추가 함수이다.
5. continue는 밑에 문장 실행하지 않고 바로 다음 반복을 실행한다.
6. '구분자'. join(list)함수리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어주는 함수이다.
참고2
matrix = [list(input()) for j in range(5)]
temp_list = []

for col in range(15):
    for row in range(5):
        if col < len(matrix[row]):
            temp_list.append(matrix[row][col])
            
print("".join(temp_list))

- 예외를 발생시키는 것이 부담스럽다면 이 방법도 있다.