[백준 Python] 23746번 문자열 압축 해제

iwtkmn_0219·2023년 1월 19일
0

백준 Python

목록 보기
18/32
post-thumbnail

백준 23746 문자열 압축 해제 (브론즈 1)

문제

특정 소문자 문자열 패턴을 대문자 한 글자로 압축하는 프로그램 SPC(String Pattern Compressor)가 있다.

예를 들어, 다음과 같은 방법으로 압축하는 경우, “aabbaaac\text{aabbaaac}”는 “ABAC\text{ABAC}”로 압축된다.

소문자 문자열 패턴대문자
aa\text{aa}A\text{A}
bba\text{bba}B\text{B}
c\text{c}C\text{C}

압축 프로그램과 압축된 문자열이 주어지면, 압축되기 전 문자열의 일부를 출력하는 프로그램을 작성하시오.

입력

첫 번째 줄에 압축 방법의 개수
NN이 주어진다. (1N261 \le N \le 26)

두 번째 줄부터 NN개의 줄에 소문자 문자열 패턴과 대응되는 대문자가 공백으로 구분되어 주어진다. 각 소문자 문자열 패턴의 길이는 10001\,000을 넘지 않으며, 같은 대문자는 두 번 이상 주어지지 않는다.

N+1N+1번째 줄에 압축된 문자열이 주어진다. 압축된 문자열 길이는 10001\,000을 넘지 않는다.

마지막 줄에 두 정수 SSEE가 주어진다. ($1 \le S \le E \le $ (압축되기 전 문자열 길이))

출력

압축되기 전 문자열의 SS번째 문자에서 EE번째 문자까지 출력한다.

풀이 및 회고

풀이

대문자에 대한 소문자 문자열 패턴을 전부 딕셔너리에 저장한 후 압축문자열에 따라 변환한 문자열을 슬라이싱하여 출력한다.

회고

너무 늦게 일어나는 바람에 일단 급하게 풀고 제출을..ㅎㅎ

코드

n = int(input())
dic = {}
for line in range(n):
    small, large = input().split()
    dic[large] = small
compact_str = input()
result = ""
for word in compact_str:
    result += dic[word]
s, e = map(int, input().split())
print(result[s - 1 : e])

>> iwtkmn0219의 Github <<

0개의 댓글