[TIL] 250802 - 프로그래머스 모음사전

2025. 8. 2. 15:00·기록/TIL

문제 설명

 

사전에 알파벳 모음 '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

입출력 예 설명

 

입출력 예 #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번째 단어입니다.

 

나의 답

from itertools import product

def solution(word):
    alpha = ['A', 'E', 'I', 'O', 'U']
    dict = []
    
    for length in range(1,6):
        for comb in product(alpha, repeat=length):
            dict.append(''.join(comb))
            
    dict.sort()
    return dict.index(word) + 1

 

  • 문제는 A, E, I, O, U로 만들 수 있는 길이 1~5의 모든 단어 중 특정 단어의 순서를 찾는 것이었다.
  • 알고리즘 분류가 완전 탐색으로 되어 있지 않았더라면 완전 탐색할 생각 못했을 것 같다..
  • itertools의 product를 사용해 길이 1~5의 모든 조합을 생성하고 사전순으로 정렬하여 해결했다.
  • 가능한 단어 개수가 3905개라서 완전 탐색이어도 성능상 문제는 없었다.
  • 가중치 방식도 있었는데 훨씬 효율적이었지만, 바로 떠올릴 수는 없는 방식이라고 생각해 풀이법 자체를 기억해두기로 했다.

 

저작자표시 비영리 (새창열림)

'기록 > TIL' 카테고리의 다른 글

[TIL] 250911 - 프로그래머스 숫자의 표현  (0) 2025.09.11
[TIL] 250802 - 프로그래머스 여행경로  (4) 2025.08.02
[TIL] 250717 - 프로그래머스 아이템 줍기  (0) 2025.07.17
[TIL] 250717 - 프로그래머스 섬 연결하기  (1) 2025.07.17
[TIL] 250716 - 프로그래머스 전력망을 둘로 나누기  (0) 2025.07.16
'기록/TIL' 카테고리의 다른 글
  • [TIL] 250911 - 프로그래머스 숫자의 표현
  • [TIL] 250802 - 프로그래머스 여행경로
  • [TIL] 250717 - 프로그래머스 아이템 줍기
  • [TIL] 250717 - 프로그래머스 섬 연결하기
박윤서
박윤서
  • 박윤서
    데이터 창고
    박윤서
  • 전체
    오늘
    어제
    • 분류 전체보기 (73)
      • 프로젝트 (8)
      • 데이터 지식 (9)
        • 이상치탐지 (2)
        • opencv (3)
        • 통계 (2)
      • 기록 (53)
        • TIL (29)
        • 머신러닝 (12)
        • 자바의 정석 (11)
        • 취준 (1)
      • LLM&AGENT (0)
      • 학부연구생 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    완전탐색
    시계열
    프로그래머스
    BFS
    dfs
    시계열 이상치
    Python
    dp
    til
    코테
    사이킷런
    이상치 탐지
    자료구조
    바킹독
    회귀분석
    큐
    머신러닝
    코딩테스트
    알고리즘
    그리디
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
박윤서
[TIL] 250802 - 프로그래머스 모음사전
상단으로

티스토리툴바