특정 소문자 문자열 패턴을 대문자 한 글자로 압축하는 프로그램 SPC(String Pattern Compressor)가 있음
예를 들어, 아래 이미지와 같은 방법으로 압축하는 경우, “aabbaaac”는 “ABAC”로 압축됨
압축 프로그램과 압축된 문자열이 주어지면, 압축되기 전 문자열의 일부를 출력하기
입력
첫 번째 줄에 압축 방법의 개수 N이 주어짐 (1≤N≤26)
두 번째 줄부터 N개의 줄에 소문자 문자열 패턴과 대응되는 대문자가 공백으로 구분되어 주어짐
각 소문자 문자열 패턴의 길이는 1000을 넘지 않으며, 같은 대문자는 두 번 이상 주어지지 않음
N+1번째 줄에 압축된 문자열이 주어짐
압축된 문자열 길이는 1000을 넘지 않음
마지막 줄에 두 정수 S와 E가 주어짐 (1≤S≤E≤ (압축되기 전 문자열 길이))
출력
압축되기 전 문자열의 S번째 문자에서 E번째 문자까지 출력
시간 제한: 1초
메모리 제한: 1024 MB
"""
입출력 예시)
(예제 입력 1)
3
aa A
bba B
c C
ABAC
4 6
-> baa
(예제 입력 2)
5
abcde A
abcde B
abcde C
abcde D
abcde E
ABCDE
1 25
-> abcdeabcdeabcdeabcdeabcde
(예제 입력 3)
4
e E
f F
g G
h H
EEEFEEE
4 5
-> fe
"""
# (예제 입력 1)
# 압축되기 전 문자열: aabbaaac
# => 출력: baa
# (예제 입력 2)
# 압축되기 전 문자열: abcdeabcdeabcdeabcdeabcde
# => 출력: abcdeabcdeabcdeabcdeabcde
# (예제 입력 3)
# 압축되기 전 문자열: eeefeee
# => 출력: fe
## 의사코드 ##
# 압축 방법을 담기 -> dict ({'대문자': '소문자 문자열 패턴'})
# 압축되기 전 문자열
# before = ""
# for chr in str:
# 대문자를 소문자 문자열 패턴으로 변환
# before += dic[chr]
# 압축되기 전 문자열의 s번째 문자부터 e번째 문자까지 출력
# print(before[s-1:e])
통과한 코드
n = int(input()) # 압축 방법의 개수
dic = {} # 압축 방법을 담을 딕셔너리 ({'대문자': '소문자 문자열 패턴'})
for _ in range(n):
low, up = input().split()
dic[up] = low
str = input() # 압축된 문자열
s, e = map(int, input().split())
before = "" # 압축되기 전 문자열
for chr in str:
# 대문자를 소문자 문자열 패턴으로 변환
before += dic[chr]
# 압축되기 전 문자열의 s번째 문자부터 e번째 문자까지 출력
print(before[s-1:e])
-> 압축되기 전 문자열의 s번째 문자부터 e번째 문자까지 출력하려면 [s-1:e] 라고 해야 하는 것 주의!