Record
모음사전[코딩테스트] 본문
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 |