rl = lambda:sys.stdin.readline()
n = int(rl())
data = []
for i in range(n):
data.append(rl())
for strline in data:
keys = re.findall(r'%[0-9a-fA-F]{2}', strline)
for key in keys :
hexKey = '0x' + key[1:3]
replace = chr(int(hexKey, 16))
strline = strline.replace(key, replace)
print(strline.strip())
정규식을 이용하여 %와 16진수 2자리를 Ascii로 치환하는 방식으로
구현을 했습니다.
줄 단위로 패턴을 인식해서 해당 패턴이 있는 단어들을 추출합니다.
추출된 단어에서 % 이후 2자리와 0x를 붙여서 16진수 형태로 만든 후 int에서 16진수로 변환하고 다시 ascii 코드로 변환시켰습니다.
원래 추출된 단어와 변환된 ascii 값을 replace로 치환을 시켰습니다.
치환이 완료된 후에는 완성된 문자열에서 공백을 제거한 후 출력했습니다.
%25와 관련해서 처음에는 변환된 내용을 한번 더 변환해야하나 했는데
결론적으로 다 변환도 해보고 한번만 변환했을때도
오답으로 체크가 되어서 제가 문제의 의도를
제대로 파악을 못한 것 같습니다.
kummyong
python 3.4 로 작성하였습니다.
import sys
import re
rl = lambda:sys.stdin.readline()
n = int(rl())
data = []
for i in range(n):
data.append(rl())
for strline in data:
keys = re.findall(r'%[0-9a-fA-F]{2}', strline)
정규식을 이용하여 %와 16진수 2자리를 Ascii로 치환하는 방식으로
구현을 했습니다.
줄 단위로 패턴을 인식해서 해당 패턴이 있는 단어들을 추출합니다.
추출된 단어에서 % 이후 2자리와 0x를 붙여서 16진수 형태로 만든 후 int에서 16진수로 변환하고 다시 ascii 코드로 변환시켰습니다.
원래 추출된 단어와 변환된 ascii 값을 replace로 치환을 시켰습니다.
치환이 완료된 후에는 완성된 문자열에서 공백을 제거한 후 출력했습니다.
%25와 관련해서 처음에는 변환된 내용을 한번 더 변환해야하나 했는데
결론적으로 다 변환도 해보고 한번만 변환했을때도
오답으로 체크가 되어서 제가 문제의 의도를
제대로 파악을 못한 것 같습니다.
도움 부탁드립니다.
9년 전