728x90
https://programmers.co.kr/learn/courses/30/lessons/84512
문제 설명
사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.
단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.
제한사항- word의 길이는 1 이상 5 이하입니다.
- word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.
입출력 예 word result
"AAAAE" | 6 |
"AAAE" | 10 |
"I" | 1563 |
"EIO" | 1189 |
요약하면!
알파벳 모음 'A', 'E', 'I', 'O', 'U'을 이용해서 5글자 이하인 단어들을 만드는데
이제 이것들을 사전식으로 정렬해서 주어진 word가 몇번째인지 찾는 문제.....
사전식으로 어떻게 정렬할지가 문제네요....
하지만 이 부분도 재귀를 이용하면 쉽게 구현이 가능하네요;;(여기서 엄청 헤맸어요... 조합을 통해서 만들었거든요 ㅋㅋ)
시작!
제일 핵심 부분인 사전식 배열 만들기!
def all_word(cnt, w):
if cnt == 5:
return
for i in range(len(words)):
word_list.append(w + words[i])
all_word(cnt + 1, w + words[i])
재귀를 돌리면 순서가 A AA AE AI..... UUUUU까지 가겠네요
cnt는 0부터 시작해서 5가 되면 6 글자니까 멈춰주고.. 이게 끝이네요
함수 실행해주고
all_word(0, "")
return word_list.index(word) + 1
사전 배열. index(찾을 단어)로 인덱스를 찾아줍시다.(인덱스는 0부터 시작이니 +1)
*all
def solution(word):
answer = 0
word_list = []
words = "AEIOU"
def all_word(cnt, w):
if cnt == 5:
return
for i in range(len(words)):
word_list.append(w + words[i])
all_word(cnt + 1, w + words[i])
all_word(0, "")
return word_list.index(word) + 1
문자열 조합인 줄 알고 조합 쓰고 그걸 따로 정렬하려 했지만 이렇게 푸는 방법도 있네요...!
하나 배워가네요 ㅎ
틀린 점이 있다면 댓 달아주세요!
'코딩테스트!(프로그래머스 & 백준) > 프로그래머스-Python' 카테고리의 다른 글
코딩테스트--정수 삼각형(프로그래머스 / 파이썬) (0) | 2022.05.20 |
---|---|
코딩테스트--거리두기 확인하기(프로그래머스 / 파이썬) (0) | 2022.05.16 |
코딩테스트--후보키(프로그래머스 / 파이썬) (0) | 2022.05.09 |
코딩테스트--[3차] 파일명 정렬(프로그래머스/파이썬) (0) | 2022.04.12 |
코딩테스트--[1차] 캐시(프로그래머스 / 파이썬) (0) | 2022.04.03 |
댓글