incoded = input()
upper = list(map(chr, range(ord('A'), ord('Z')+1)))
lower = list(map(chr, range(ord('a'), ord('z') +1)))
nums = list(map(str, range(0, 10)))
dict_code = {}
for k in upper :
dict_code[k] = ord(k) -65
for k in lower :
dict_code[k] = ord(k) - 71
for k in nums :
dict_code[k] = ord(k) + 3
dict_code['+'] = 62
dict_code['/'] = 63
decode = ""
quote = ""
for s in incoded:
abyte = bin(dict_code[s])[2:]
if len(abyte) < 6:
abyte = "0"*(6-len(abyte)) + abyte
decode += abyte
for i in range(0, len(decode), 8):
quote += chr(int(decode[i:i+8], 2))
print(quote)
답이 비슷하게 나오긴했는데 다음과 같았다
Life itself is a quo3atio]î
아무래도 dict_code 에서 알파벳과 숫자 맵핑을 잘못한 것 같았다.
그래서 확인해보니 숫자형 문자에서 숫자가 잘 못 맵핑되었다.
for test_case in range(1, T + 1):
# ///////////////////////////////////////////////////////////////////////////////////
incoded = input()
upper = list(map(chr, range(ord('A'), ord('Z')+1)))
lower = list(map(chr, range(ord('a'), ord('z') +1)))
nums = list(map(str, range(0, 10)))
dict_code = {}
for k in upper :
dict_code[k] = ord(k) -65
for k in lower :
dict_code[k] = ord(k) - 71
for k in nums :
dict_code[k] = ord(k) + 4
dict_code['+'] = 62
dict_code['/'] = 63
decode = ""
quote = ""
for s in incoded:
abyte = bin(dict_code[s])[2:]
if len(abyte) < 6:
abyte = "0"*(6-len(abyte)) + abyte
decode += abyte
for i in range(0, len(decode), 8):
quote += chr(int(decode[i:i+8], 2))
print("#%d %s" % (test_case , quote))
range(A,B,C) : B만큼동안 A숫자부터 C씩 끊는다
int(A, B) : 십진수 A를 B진수로 만든다.
array[A:B] : 앞에서 A번째부터 B번째 배열 엘리먼트까지를 반환한다.
ord(A) : ascii 코드 번호를 반환한다.