← Back to List

6368번: P,MTHBGWB ↗

Solutions

Python 3
1.3 KB | 1324 chars
import sys
from math import sqrt, pi, sin, factorial, ceil, floor
from datetime import datetime, timedelta
sys.setrecursionlimit(10**7)

BLANK = " "

# inp = input
inp = lambda : sys.stdin.readline().rstrip()
mii = lambda x = BLANK : [*map(int,inp().split(x))]
mfi = lambda x = BLANK : [*map(float,inp().split(x))]
ii = lambda : int(inp())
fi = lambda : float(inp())
p = print

morse_code_dict = {
  'A': '01', 'B': '1000', 'C': '1010', 'D': '100', 'E': '0',
  'F': '0010', 'G': '110', 'H': '0000', 'I': '00', 'J': '0111',
  'K': '101', 'L': '0100', 'M': '11', 'N': '10', 'O': '111',
  'P': '0110', 'Q': '1101', 'R': '010', 'S': '000', 'T': '1',
  'U': '001', 'V': '0001', 'W': '011', 'X': '1001', 'Y': '1011',
  'Z': '1100', '_': '0011', '.': '1110', ',': '0101', '?': '1111',
}

def to_morse(s):
  ret = ""
  ln = []

  for i in s:
    ret += morse_code_dict[i]
    ln.append(len(morse_code_dict[i]))

  return [ret, ln]

def to_str(morse, ln):
  key = {}

  for k, v in morse_code_dict.items():
    key[v] = k

  ans = ""
  crt = 0

  for i in ln:
    ans += key[morse[crt:crt+i]]
    crt += i

  return ans

def solve():
  s = inp()

  morse, ln = to_morse(s)
  ln = ln[::-1]

  ans = to_str(morse, ln)

  p(ans)

if __name__ == "__main__":
  tc = ii()

  for t in range(1, tc+1):
    p(end = f"{t}: ")
    ret = solve()