딕셔너리 암호문 문제 힌트..

조회수 580회
dictionary = {"a": "b", "b": "c", "c": "d", "d": "e", "e": "f", "f": "g", "g": "h", "h": "i", "i": "j", "j": "k", "k": "l", "l": "m", "m": "n", "n": "o", "o": "p", "p": "q", "q": "r", "r": "s", "s": "t", "t": "u", "u": "v", "v": "w", "w": "x", "x": "y", "y": "z", "z" : "a", " ":" "}

password = "h knud xnt"


def decode(dictionary, password):
    word = tuple(str(password))
    for word in dictionary.keys():
        ans = dictionary[word]
    return ans

print(decode(dictionary,password))

password 키값을 넣어 딕셔너리의 벨류값 ans를 내보내는 def 함수를 정의하려하는데 초보다 보니 너무 어렵네요.. 위 코드 중 word 부분을 수정해야하는데 힌트좀 부탁드립니다.

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    하고자하는 목적과 코드를 순서대로 읽어 보시면 간단합니다.

    word = tuple(str(password))password를 튜플로 만듭니다. password"h knud xnt" 이므로 word('h', ' ', 'k', 'n', 'u', 'd', ' ', 'x', 'n', 't')가 되겠죠.

    for word in dictionary.keys():dictionary의 키값을 순회 하는데 이때 키가 word에 대입되니다. 즉, "a"에 대해서 루프를 돌고, "b"에 대해서 루프를 돌고 ... 으로 dictionary에 대한 모든 키에대해서 루프를 돕니다.

    헌데 이때 앞서 튜플화 하였던 word의 값은 for 문으로 인해 사라지겠죠?

    하고자하는 작업은 word의 글자 하나하나를 키로 dictionary에서 찾아 원래 문장으로 조합하는 것입니다. 그러니 튜플 값이 사라져서는 안됩니다.

    그리고 for 문에서는 dictionary의 키를 갖고 순회를 하는 것이 아니라 word의 글자를 갖고 순회를 하여 찾아야합니다.

    따라서 튜플화 된 word를 갖고 루프를 돌도록 다음과 같이 for문을 작성하면, 글자 하나하나에 대해서 dictionary에서 찾을 수 있습니다.

    for w in word:
        ans = dictionary[w]
    

    하지만 그러면 글자 하나하나 찾기만 하는거지 원래 문장으로 조합을 하는 것은 아닙니다.

    다음과 같이 dictionary에서 찾은 글자를 문자열로 조합할 수 있습니다.

    ans = ""
    for w in word:
        ans += dictionary[w]
    

    결과 적으로 "h knud xnt""i love you"으로 변환이 됩니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)