문제
SWEA 13684 . 의석이의 세로로 말해요
https://swexpertacademy.com/main/talk/solvingClub/problemView.do?solveclubId=AYYSRkW6cRoDFAVw&contestProbId=AX7w2kdKS8QDFARO&probBoxId=AYaPtr1K-_0DFARM&type=USER&problemBoxTitle=230303%3A+%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4_5&problemBoxCnt=6
풀이
조건
- 테스트 케이스의 수 T가 주어지며 각 테스트 케이스는 총 다섯 줄로 이루어져 있다.
- 각 줄에는 길이가
1이상 15이하
인 문자열이 주어진다. 각 문자열은 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’부터 ‘9’
만으로 이루어져 있다.
세로
로 읽은 순서대로 글자들을 출력한다.
풀이 순서
- 5개의 단어의 길이를 비교하여
최대 길이
를 구해주고 최대 길이 만큼 각 단어들의 길이를 늘려주기 위해
문자를 더해준다.
- 리스트에 임의로 넣은 문자까지 포함해서 단어의 세로로 읽은 순서대로 글자들을 넣는다.
- 임의로 넣은 문자를
전부 제거
하여 출력한다.
코드
Python
T = int(input())
for tc in range(1, T + 1):
arr = [input() for _ in range(5)]
lst = []
mx = 0
for i in range(5):
if len(arr[i]) > mx:
mx = len(arr[i])
for i in range(5):
if len(arr[i]) != mx:
for j in range(mx - len(arr[i])):
arr[i] += '-'
for i in range(mx):
for j in range(5):
lst.append(arr[j][i])
a = lst.count('-')
for i in range(a):
lst.remove('-')
print(f'#{tc}', ''.join(lst))
다른 방법 1
T = int(input())
for tc in range(1, T + 1):
arr = []
for _ in range(5):
arr.append(input())
lst = []
for j in range(15):
for i in range(5):
if len(arr[i]) >= j + 1:
lst.append(arr[i][j])
print(f'#{tc}', ''.join(lst))
다른 방법 2
T = int(input())
for tc in range(1, T + 1):
print(f'#{tc}', end=' ')
words = [input() for i in range(5)]
for j in range(15):
for i in range(5):
if j < len(words[i]):
print(words[i][j], end='')
print()