https://www.acmicpc.net/problem/12174
string 모듈을 이용해서 binary를 key, 모든 문자를 value로 하는 딕셔너리를 만든다.
케이스 마다 replace로 I와 O를 1, 0으로 바꿔주고, 8개씩 끊어서 딕셔너리에 해당하는 값으로 바꾸어 출력한다.
import sys
import string
input = sys.stdin.readline
t = int(input())
ascii_dict = {int(bin(ord(x))[2:]):x for x in string.ascii_letters+string.digits+string.punctuation+string.whitespace}
for case in range(t):
n = int(input())
x = input().rstrip()
x = x.replace("O", "0")
x = x.replace("I", "1")
print(f"Case #{case+1}: ", end="")
for i in range(0, 8*n, 8):
s = x[i:i+8]
print(ascii_dict[int(s)], end="")
print()
너무 더럽..게 푼거 같아서 다른분의 코드를 확인해봤다.ㅠ
for case in range(int(input())):
b = int(input())
s = input().replace('O', '0')
s = s.replace('I', '1')
res = "".join([chr(int(s[8*i:8*(i+1)], 2)) for i in range(b)])
print(f"Case #{case+1}: {res}")