1 minute read

문제

#29701 모스 부호
Bronze2
적용 알고리즘: String


풀이 방법

  • 입력에서 각 모스 부호가 공백으로 구분되어 입력되므로 입력된 모스부호를 공백을 기준으로 쪼갠다.
  • 모스부호를 딕셔너리에 저장한다.

코드 흐름

  1. 입력받은 모스부호를 공백을 기준으로 자른다. (각각의 문자는 리스트에 저장된다.)
  2. 리스트의 각 원소마다 모스 부호가 저장된 딕셔너리의 값과 비교하여 문자열을 찾고, 이를 출력 문자열에 저장한다.
  3. 완성된 문자열을 출력한다.

코드

moss = {
    '.-': 'A',
    '-...': 'B',
    '-.-.': 'C',
    '-..': 'D',
    '.': 'E',
    '..-.': 'F',
    '--.': 'G',
    '....': 'H',
    '..': 'I',
    '.---': 'J',
    '-.-': 'K',
    '.-..': 'L',
    '--': 'M',
    '-.': 'N',
    '---': 'O',
    '.--.': 'P',
    '--.-': 'Q',
    '.-.': 'R',
    '...': 'S',
    '-': 'T',
    '..-': 'U',
    '...-': 'V',
    '.--': 'W',
    '-..-': 'X',
    '-.--': 'Y',
    '--..': 'Z',
    '.----': '1',
    '..---': '2',
    '...--': '3',
    '....-': '4',
    '.....': '5',
    '-....': '6',
    '--...': '7',
    '---..': '8',
    '----.': '9',
    '-----': '0',
    '--..--': ',',
    '.-.-.-': '.',
    '..--..': '?',
    '---...': ':',
    '-....-': '-',
    '.--.-.': '@'
}

n = int(input())
moss_sent = input().split()
text = ""
for i in moss_sent:
    text += moss[i]
print(text)

체감 난이도: 1.1/5
이 문제는 모스부호를 오타 없이 치는 과정이 더 어려운 것 같다. 알파벳은 긁어왔고 나머지는 내가 쳤는데 오타가 나서 한번 틀렸다ㅋㅋ 근데 만약 문제에서 모스 부호를 공백 없이 주어졌다면 이를 대조하며 찾는 과정에서 시간초과나 이런게 났을 수도 있을 것 같다.