🗒️파이썬 코드 풀이
T = int(input())
for tc in range(1,T+1) :
N = int(input())
lst = [(input().split()) for _ in range(N)] # 입력 받기
for i in range(N) : # 숫자형으로 변환
lst[i][1] = int(lst[i][1])
sentence = ""
for char,num in lst : # 문자 * 숫자로 문자열 만들고 합치기
sentence += char * num
print(f"#{tc}") # 너비가 10이 되도록 나눠주기
for i in range(len(sentence)//10+1):
print(sentence[i*10 : (i+1)*10])
1. lst에 문자열과 숫자열 동시에 입력 받아서 저장
2. input은 기본적으로 문자형으로 취급하기 때문에, 숫자들을 숫자형으로 변환
3. 문자과 숫자를 곱해 준 다음, sentence에 쭉 이어붙힘
4. 10 단위로 쪼개주고 마지막에 +1 까지해서 문자열 출력
* 파이썬에서는 리스트의 슬라이싱에서 인덱스가 리스트의 길이를 초과해도 오류가 발생하지 않는다.
Ex)
A = ["a","b","c"]
print( A[:1000000]
=> 이렇게 해도 출력 가능 (리스트도 마찬가지)
📌 문제 코멘트
사실 문제가 간단해서 포스팅을 안하려했는데, 리스트 길이를 초과해도 오류가 안나는게 신기해서 포스팅 해봤다.
📚문제
원본 문서는 너비가 10인 여러 줄의 문자열로 이루어져 있다.
문자열은 마지막 줄을 제외하고 빈 공간 없이 알파벳으로 채워져 있고 마지막 줄은 왼쪽부터 채워져 있다.
이 문서를 압축한 문서는 알파벳과 그 알파벳의 연속된 개수로 이루어진 쌍들이 나열되어 있다. (예 : A 5 AAAAA)
압축된 문서를 입력 받아 원본 문서를 만드는 프로그램을 작성하시오.
[예제]
압축된 문서의 내용
A 10
B 7
C 5
압축을 풀었을 때 원본 문서의 내용
AAAAAAAAAA
BBBBBBBCCC
CC
[제약사항]
1. 압축된 문서의 알파벳과 숫자 쌍의 개수 N은1이상 10이하의 정수이다. (1 ≤ N ≤ 10)
2. 주어지는 알파벳 Ci는 A~Z의 대문자이다. (i는 줄의 번호로 1~N까지의 수)
3. 알파벳의 연속된 개수로 주어지는 수 Ki는 1이상 20이하의 정수이다. (1 ≤ Ki ≤ 20, i는 줄의 번호로 1~N까지의 수)
4. 원본 문서의 너비는 10으로 고정이다.
[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스에는 N이 주어지고 다음 줄부터 N+1줄까지 Ci와 Ki가 빈 칸을 사이에 두고 주어진다.
[출력]
각 줄은 '#t'로 시작하고, 다음 줄부터 원본 문서를 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
'알고리즘 > 알고리즘_swea' 카테고리의 다른 글
[Python][SWEA] 1240. [S/W 문제해결 응용] 1일차 - 단순 2진 암호코드 D3 (0) | 2024.05.07 |
---|---|
[Python][SWEA] 1493. 수의 새로운 연산 D3 (0) | 2024.05.06 |
[Python][SWEA] 4615. 재미있는 오셀로 게임 D3 (0) | 2024.05.05 |
[Python][SWEA] S/W 문제해결 기본 3일차 - 회문2 D3 (0) | 2024.05.05 |
[Python][SWEA] 1860. 진기의 최고급 붕어빵 D3 (0) | 2024.05.05 |