관리 메뉴

솜씨좋은장씨

[BaekJoon] 24745번 : Morse Code Palindromes (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 24745번 : Morse Code Palindromes (Python)

솜씨좋은장씨 2022. 10. 30. 12:43
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 Morse Code Palindromes 입니다.

 

24745번: Morse Code Palindromes

A palindrome is a word, number, phrase, or other sequence of characters which reads the same backward as forward, such as madam or racecar or 1881. Phase palindromes ignore capitalization, punctuation, and word boundaries. For example: Madam I'm Adam. Mors

www.acmicpc.net

👨🏻‍💻 문제 풀이

입력받은 문자열을 모스부호로 변경하고 

변경한 모스부호가 palindrome 인지 아닌지 확인하여

palindrome 이면 YES를 

palindrome 이 아니면 NO를 출력하는 문제입니다.

def convert_string_to_morse_code(string):
    morse_code_list = []
    
    string = string.lower()
    
    morse_code_dict = {
        "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": "--..", "0": "-----", "1": ".----", "2": "..---", "3": "...--",
        "4": "....-", "5": ".....", "6": "-....", "7": "--...", "8": "---..", "9": "----."
    }
    for char in list(string):
        if char in morse_code_dict:
            morse_code_list.append(morse_code_dict[char])
    
    return "".join(morse_code_list)

먼저 문자열을 모스부호로 바꾸어주는 함수를 만들었습니다.

각 문자에 대한 모스부호 값을 dictionary 로 만들어 준 다음

변환한 값들을 list 에 담고 "".join()으로 하나의 문자열로 만들어주었습니다.

def check_is_palindrome(morse_code):
    is_palindrome = False
    
    if morse_code == morse_code[::-1] and len(morse_code) > 0:
        is_palindrome = True
        
    return is_palindrome

이렇게 만든 문자열을

palindrome 인지 아닌지 체크하는데에는 [::-1] 을 활용하였습니다.

이 문제에서는 아무것도 입력을 받지 않았을때 정답을 NO 로 하기로 하였으므로 

길이가 1 이상인 값만 palindrome 을 체크하여 palindrome 일때 True 를 return 하도록 하였습니다.

def make_answer(is_palindrome):
    return "YES" if is_palindrome else "NO"

전체 코드는 아래를 참고해주세요.

👨🏻‍💻 코드 ( Solution )

def convert_string_to_morse_code(string):
    morse_code_list = []
    
    string = string.lower()
    
    morse_code_dict = {
        "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": "--..", "0": "-----", "1": ".----", "2": "..---", "3": "...--",
        "4": "....-", "5": ".....", "6": "-....", "7": "--...", "8": "---..", "9": "----."
    }
    for char in list(string):
        if char in morse_code_dict:
            morse_code_list.append(morse_code_dict[char])
    
    return "".join(morse_code_list)
            

def check_is_palindrome(morse_code):
    is_palindrome = False
    
    if morse_code == morse_code[::-1] and len(morse_code) > 0:
        is_palindrome = True
        
    return is_palindrome


def make_answer(is_palindrome):
    return "YES" if is_palindrome else "NO"


if __name__ == "__main__":
    string = input()
    
    morse_code_list = convert_string_to_morse_code(string=string)
    
    print(morse_code_list)
    
    is_palindrome = check_is_palindrome(morse_code=morse_code_list)
    
    print(make_answer(is_palindrome=is_palindrome))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments