100세까지 코딩
[백준] 10798번 세로읽기 (파이썬) 본문
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))
- 예외를 발생시키는 것이 부담스럽다면 이 방법도 있다.
'코딩테스트 > 파이썬' 카테고리의 다른 글
[백준] 11005번 진법 변환2 (파이썬) (0) | 2024.01.15 |
---|---|
[백준] 2563번 색종이 (파이썬) (0) | 2024.01.14 |
[백준] 2566번 최댓값(파이썬) (0) | 2024.01.11 |
[백준] 1316번 그룹 단어 체커 (파이썬) (0) | 2024.01.11 |
[백준] 2941번 크로아티아 알파벳 (0) | 2024.01.10 |