관리 메뉴

솜씨좋은장씨

[Programmers] 위클리 챌린지 5주차 - 모음사전 (Python) 본문

Programming/코딩 1일 1문제

[Programmers] 위클리 챌린지 5주차 - 모음사전 (Python)

솜씨좋은장씨 2021. 10. 4. 01:08
728x90
반응형

코딩 1일 1문제! 즐거운 대체공휴일인 오늘!

오늘의 문제는 프로그래머스의 위클리 챌린지 5주차 문제인 모음사전입니다.

 

코딩테스트 연습 - 5주차_모음사전

사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니

programmers.co.kr

👨🏻‍💻 코드 풀이

이 문제는 모음 ( A, E, I, O, U ) 로 이루어진 A ~ UUUUU 사이의 단어가

몇번째 단어인지를 맞추는 문제입니다.

저는 곱집합을 만들어주는 itertools의 product를 활용하여 문제를 풀었습니다.

itertools의 product는 아래의 글을 참고해주세요.

 

파이썬을 파이썬답게 - 곱집합(Cartesian product) 구하기 - product

본 강의는 파이썬 문법을 이미 알고 있는 분들을 대상으로 만들어졌습니다. ##### 이런 분들께 추천합니다 * 파이썬 문법을 알고 계시는 분 * 알고리즘 문제를 조금 더 쉽게 풀고 싶은 분 * Python 코

programmers.co.kr

vowels = 'AEIOU'

product로 곱집합을 만들 기준이되는 모음을 활용하여 문자열을 하나 만들어주고

vowels1 = list(vowels)
vowels2 = [''.join(word) for word in list(product(vowels, repeat=2))]
vowels3 = [''.join(word) for word in list(product(vowels, repeat=3))]
vowels4 = [''.join(word) for word in list(product(vowels, repeat=4))]
vowels5 = [''.join(word) for word in list(product(vowels, repeat=5))]

1개로 이루어진 단어부터 5개로 이루어진 단어를 모두 만들어준 뒤

vowel_dict = vowels1 + vowels2 + vowels3 + vowels4 + vowels5
    
vowel_dict.sort()

모든 단어를 vowel_dict에 모아주고 이를 사전순으로 정렬합니다.

vowel_dict.index(word) + 1

마지막으로 vowel_dict 안에서 어떠한 단어가 몇 번째 단어인지를 index 함수를 활용해 구합니다.

index 함수를 통해 나오는 값은 0 부터 시작하므로 나오는 값에 1을 더해주면 몇 번째 단어인지 알 수 있습니다.

 

전체 코드는 아래를 참고해주세요.

👨🏻‍💻 코드 ( Solution )

from itertools import product

def solution(word):
    vowels = 'AEIOU'
    vowels1 = list(vowels)
    vowels2 = [''.join(word) for word in list(product(vowels, repeat=2))]
    vowels3 = [''.join(word) for word in list(product(vowels, repeat=3))]
    vowels4 = [''.join(word) for word in list(product(vowels, repeat=4))]
    vowels5 = [''.join(word) for word in list(product(vowels, repeat=5))]
    
    vowel_dict = vowels1 + vowels2 + vowels3 + vowels4 + vowels5
    
    vowel_dict.sort()
    
    return vowel_dict.index(word) + 1
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments