- 모음 사전
문제 설명
사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.
단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.
제한사항
- word의 길이는 1 이상 5 이하입니다.
- word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.
입출력 예
wordresult
"AAAAE" | 6 |
"AAAE" | 10 |
"I" | 1563 |
"EIO" | 1189 |
입출력 예 설명
입출력 예 #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번째 단어입니다.
https://programmers.co.kr/learn/courses/30/lessons/84512
alpha = ["A","E","I","O","U"]
words = []
def dfs(cnt, c):
if cnt == 5:
return
for a in alpha:
tmp_c = c + a
words.append(tmp_c)
dfs(cnt+1, tmp_c)
def solution(word):
answer = 0
dfs(0, "")
words.sort()
return words.index(word)+1
정확성 테스트
테스트 1 〉 통과 (0.82ms, 10.4MB)
테스트 2 〉 통과 (0.79ms, 10.4MB)
테스트 3 〉 통과 (0.84ms, 10.4MB)
테스트 4 〉 통과 (0.88ms, 10.5MB)
테스트 5 〉 통과 (0.87ms, 10.4MB)
테스트 6 〉 통과 (0.80ms, 10.5MB)
테스트 7 〉 통과 (0.83ms, 10.4MB)
테스트 8 〉 통과 (0.81ms, 10.4MB)
테스트 9 〉 통과 (0.84ms, 10.4MB)
테스트 10 〉 통과 (0.79ms, 10.5MB)
테스트 11 〉 통과 (0.81ms, 10.4MB)
테스트 12 〉 통과 (0.85ms, 10.4MB)
테스트 13 〉 통과 (0.84ms, 10.4MB)
테스트 14 〉 통과 (1.45ms, 10.6MB)
테스트 15 〉 통과 (0.82ms, 10.4MB)
테스트 16 〉 통과 (0.81ms, 10.5MB)
테스트 17 〉 통과 (0.84ms, 10.4MB)
테스트 18 〉 통과 (1.41ms, 10.3MB)
테스트 19 〉 통과 (0.84ms, 10.4MB)
테스트 20 〉 통과 (0.81ms, 10.4MB)
테스트 21 〉 통과 (0.80ms, 10.5MB)
테스트 22 〉 통과 (0.81ms, 10.5MB)
테스트 23 〉 통과 (0.87ms, 10.5MB)
테스트 24 〉 통과 (0.80ms, 10.6MB)
테스트 25 〉 통과 (0.81ms, 10.3MB)
테스트 26 〉 통과 (1.35ms, 10.4MB)
테스트 27 〉 통과 (0.83ms, 10.3MB)
테스트 28 〉 통과 (0.86ms, 10.4MB)
테스트 29 〉 통과 (0.80ms, 10.4MB)
테스트 30 〉 통과 (0.79ms, 10.4MB)
테스트 31 〉 통과 (0.82ms, 10.3MB)
테스트 32 〉 통과 (0.83ms, 10.2MB)
테스트 33 〉 통과 (0.85ms, 10.4MB)
테스트 34 〉 통과 (0.81ms, 10.4MB)
테스트 35 〉 통과 (0.87ms, 10.4MB)
테스트 36 〉 통과 (0.82ms, 10.4MB)
테스트 37 〉 통과 (0.82ms, 10.5MB)
테스트 38 〉 통과 (0.83ms, 10.4MB)
테스트 39 〉 통과 (0.82ms, 10.4MB)
테스트 40 〉 통과 (0.82ms, 10.5MB)
후기
정렬이 관건인 문제다. 하지만 문제에서 설명하는 정렬의 조건이 파이썬의 내장 정렬 함수와 동작방식이 똑같아서, 그냥 sort만 써도 되는 문제였다.
만약 첫 번째 문자, 두 번째 문자 등의 특정 위치를 기준으로 정렬해야 할 경우는 list.sort(key = lambda x : (x[0], x[1]) ) 같이 사용해야 한다.
풀이
* dfs를 돌며 5글자 이내의 모든 알파벳 경우의 수를 넣는다
* 문제 조건에 맞게 정렬을 한다. 각각 문자 위치가 답이다.
'코딩 테스트&알고리즘 > 프로그래머스 level 2' 카테고리의 다른 글
[파이썬] 프로그래머스 - 위클리 챌린지 9주차 (0) | 2021.10.08 |
---|---|
[파이썬] 프로그래머스 - 위클리 챌린지 7주차 (0) | 2021.10.05 |
[c++] 프로그래머스 - 단체사진 찍기 (0) | 2021.07.31 |
[파이썬 python] 프로그래머스 - 괄호 회전하기 (0) | 2021.07.20 |
[파이썬 python] 프로그래머스 - 행렬 테두리 회전하기 (0) | 2021.07.16 |
댓글