프로그래머스
[프로그래머스]모음사전
진철
2023. 2. 6. 22:43
728x90
반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/84512
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드를 작성하기 위한 순서는 다음과 같다.
1. A, E, I, O, U 순서대로 리스트를 하나 만들어준다.
2. 문자를 하나하나 붙인 뒤, 재귀호출을 통하여 word와 같으면 True를 반환하고 그렇지 않으면 다른 문자를 붙이고를 반복하는 dfs함수를 만들어준다.
3. dfs 함수를 한 번 호출할 때마다 answer+1을 해주고 word와 같다면 answer를 반환한다.
def solution(word):
global answer
answer = 0
moeum=['A','E','I','O','U'] #1번
def dfs(string): #2번
global answer
answer+=1 #3번
if string==word: #원하는 단어와 같으므로 True를 반환한다.
return True
if len(string)==5: #원하는 단어와 다르고 원하는 단어의 길이가 5이므로 더 이상 볼 필요가 없다. 따라서 False를 반환한다.
return False
for i in moeum: #단어 리스트와 더해가면서 재귀호출을 해준다.
if dfs(string+i)==True:
return True
for i in moeum:
if dfs(i)==True: #3번
return answer
파이썬의 특성상 문자를 더한다면 길이가 합쳐지는 것이기에 재귀호출 함수를 구현하여 문제를 해결하였다.
처음에는 사전순으로 나열했을 때, 1자리면 5가지, 2자리면 5*5가지 등 경우의 수를 계산하여서 문제를 해결하려고 했었다.
해당 방법도 매력적인 방법이지만 해귀호출로 문제를 해결하는 것이 알고리즘 실력에 있어서 더 낫다고 판단하였다.
(그래서 기분이 조금 좋아요 헤헤)
문자열 관련 문제는 다른 언어에 비해서 파이썬이 확실히 편리한 것 같다.
728x90
반응형