알고리즘/알고리즘_swea

[Python][SWEA] 1946. 간단한 압축 풀기 D2

Jerry_K 2024. 5. 5. 20:26
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


🗒️파이썬 코드 풀이

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부터 시작한다.)