Loading [MathJax]/jax/output/CommonHTML/jax.js

새소식

⌨️ Algorithms/백준

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

2023. 3. 18. 20:47

  • -

https://www.acmicpc.net/problem/23746

 

23746번: 문자열 압축 해제

특정 소문자 문자열 패턴을 대문자 한 글자로 압축하는 프로그램 SPC(String Pattern Compressor)가 있다. 예를 들어, 다음과 같은 방법으로 압축하는 경우, “aabbaaac”는 “ABAC”로 압축된

www.acmicpc.net

 

  • 특정 소문자 문자열 패턴을 대문자 한 글자로 압축하는 프로그램 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] 라고 해야 하는 것 주의!

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!