Record

모음사전[코딩테스트] 본문

알고리즘

모음사전[코딩테스트]

now-record 2025. 10. 10. 23:07
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/84512

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 설명 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다. 단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요. 제한사항 word의 길이는 1 이상 5 이하입니다. word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.

 

입출력 예 설명 입출력 예 #1 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA", "AAA", "AAAA", "AAAAA", "AAAAE", ... 와 같습니다. "AAAAE"는 사전에서 6번째 단어입니다. 입출력 예 #2 "AAAE"는 "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAE", "AAAAI", "AAAAO", "AAAAU"의 다음인 10번째 단어입니다. 입출력 예 #3 "I"는 1563번째 단어입니다. 입출력 예 #4 "EIO"는 1189번째 단어입니다.

 

------------------------------------------------------

처음 문제 풀때 당시 bfs라고 셍각했다. 사실상 dfs 였던것 

만약에 bfs로 구현한다면 dequeue를 이용해서 popleft로 [A,E,O,U,I]  ,  [ E,O,U,I , AA,AE, AO, AU, AI] 이렇게 구현 하기 때문에 현재와 맞지 않는 방식 

 

그렇다면 dfs로 해야 함 -> 이전과 같이 재귀를 이용하되 count를 올려서 하려했다.  다만 이 문장의 총 개수가 얼마 안되기 때문에 모든 길이를 구하고 index로 접근하기로 결정 

def solution(word):
   
    alpha = ["A", "E", "I", "O", "U"]
    words = []
    
    def dfs(ans):
        # ans가 5이상이면 그냥 종료 words에 계속 저장한다
        if len(ans) > 5:
            return
    
        words.append(ans)
        
        for i in alpha:
            dfs(ans+i)
            
    dfs("")
        
    return words.index(word)

 

이렇게 풀다가 그냥 count로 접근을 해보려했는데 어려워서 포기..

'알고리즘' 카테고리의 다른 글

방문길이 [프로그래머스]  (0) 2025.10.09
[알아보자] BFS 알고리즘  (1) 2025.03.24
알고리즘 공부하자!  (0) 2025.03.24