본문 바로가기
Python/알고리즘

[COS PRO 1급 #4-1] 사전에서 단어찾기

by 포푸리 (POPOOLY) 2023. 2. 27.
반응형

문제설명

어떤 단어가 XX 사전의 몇 번째 단어인지 알고 싶습니다. XX 사전에는 대문자 알파벳 'A', 'E', 'I', 'O', 'U'를 사용해 만들 수 있는 길이가 5 이하인 모든 단어가 수록되어 있습니다.

예를 들어, 사전의 첫 번째 단어는 "A"이고, 그다음은 "AA"입니다. 마지막 단어는 "UUUUU"입니다.

문자열 word가 매개변수로 주어질 때, word가 사전의 몇 번째 단어인지 return 하도록 solution 함수를 작성했습니다. 그러나, 일부 코드가 잘못되어 코드가 바르게 동작하지 않습니다. 주어진 코드가 모든 입력을 바르게 처리하도록 코드를 수정해주세요. 코드는 _**한 줄**_만 수정해야 합니다.

매개변수 설명

문자열 word가 solution 함수의 매개변수로 주어집니다.

* word는 'A', 'E', 'I', 'O', 'U'로만 구성됩니다.
* word의 길이는 5 이하입니다.

return 값 설명

사전에서 word가 몇 번째 단어인지 return 해주세요.

예시

| word | return |
|------|--------|
| "AAAAE" | 6 |
| "AAAE" | 10 |

예시 설명

사전엔 단어가 다음과 같이 수록됩니다. "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAE", "AAAAI", "AAAAO", "AAAAU", "AAAE", ...

예시 #1
"AAAAE"는 여섯 번째에 나옵니다.

예시 #2
“AAAE”는 열 번째에 나옵니다.

문제 코드

words = []

def create_words(lev, s):
    global words
    VOWELS = ['A', 'E', 'I', 'O', 'U']
    words.append(s)
    for i in range(0, 5):
        if lev < 5:
            create_words(lev, s + VOWELS[i])

def solution(word):
    global words
    words = []
    answer = 0
    create_words(0, '')
    for idx, i in enumerate(words):
        if word == i:
            answer = idx
            break
    return answer

풀이

words = []

# 사전 생성
def create_words(lev, s):
    global words
    VOWELS = ['A', 'E', 'I', 'O', 'U']
    words.append(s)
    for i in range(0, 5):
        if lev < 5:
            create_words(lev+1, s + VOWELS[i])

# 사전에서 단어가 몇번째인지 확인
def solution(word):
    global words
    words = []
    answer = 0
    create_words(0, '')
    for idx, i in enumerate(words):
        if word == i:
            answer = idx
            break
    return answer

댓글