알고리즘/프로그래머스

[프로그래머스]Lv.2 모음사전(Python)

cha_eyoon 2024. 1. 2. 13:26

https://school.programmers.co.kr/learn/courses/30/lessons/84512

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 접근 방식

 

접근 방식이 떠오르지 않았다.

우선 입력값을 리스트 안에 넣고, 각 경우의 수가  5^0 + 5^1 + 5^2 + 5^3 + 5^4 = 781개임을 확인하였다.

우선 모든 가능한 단어를 하나의 리스트에 정렬해서 대입한 후에 원하는 단어의 인덱스를 찾은 후 + 1을 해주는게 어떨까?

 

코드
from itertools import product


def solution(word):
    answer = 0
    
    total = []
    
    alphas = ['A', 'E', 'I', 'O', 'U']
    
    for i in range(1, 6):   # 최소 1자리 단어부터 최대 5자리 단어까지 존재
        words = list(product(alphas, repeat = i))   # product 사용법 
        for j in words:
            total.append(''.join(k for k in j)) # 코드 유의
    
    total.sort()   # total 단어들 정렬 
    
    answer = total.index(word) + 1
    
    
    return answer

 

회고

 

탐색 문제이므로 dfs를 이용한 코드도 찾아봐야겠다.

사전을 미리 만들어두는 것이 비효율적이라고 생각했는데 아니었다.

 

 

참고

https://developer-project.tistory.com/257

 

[프로그래머스] 모음사전 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제

developer-project.tistory.com

https://velog.io/@falling_star3/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%88%9C%EC%97%B4-%EC%A1%B0%ED%95%A9-%EC%A4%91%EB%B3%B5%EC%88%9C%EC%97%B4-%EC%A4%91%EB%B3%B5%EC%A1%B0%ED%95%A9itertools%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-%EA%B5%AC%ED%98%84

 

[Python] 순열, 조합, 중복순열, 중복조합(itertools를 활용한 구현)

순열, 조합, 중복순열, 중복조합의 정의와 차이를 비교하고 itertool 패키지를 활용해 python으로 구현해본다.

velog.io