[프로그래머스] 모음사전 (수학)

2025. 6. 5. 12:36·Algorithm/Coding Test Records

문제 소개

이전 푼 모음 사전 - 프로그래머스 문제 다른 방식으로도 정리합니다. 참고
이 문제는 모음만을 사용해 만들 수 있는 단어들 중에서, 주어진 단어가 사전에서 몇 번째인지 구하는 문제입니다.
사전은 "A"부터 "UUUUU"까지의 모든 조합이 포함되며, 사전순으로 정렬되어 있다고 가정합니다.

문제 링크: 모음 사전 - 프로그래머스


문제 접근 방식

이 문제는 다음과 같은 방식으로 접근했습니다:

    1. 단어 길이는 최대 5자리, 사용할 수 있는 문자는 총 5개 → 가능한 단어 수는 유한
    2. 각 자리마다 A~U 중 어떤 문자가 오는지에 따라 앞에 몇 개 단어가 오는지 계산 가능
      첫 글자가 'A'일 때
      'A'로 시작하는 모든 단어를 생각해보면 다음과 같은 구조:
      • A (1글자) = 1개
      • AA, AE, AI, AO, AU (2글자) = 5개
      • AAA ~ AUU (3글자) = 5 × 5 = 25개
      • AAAA ~ AUUU (4글자) = 5 × 5 × 5 = 125개
      • AAAAA ~ AUUUU (5글자) = 5⁴ = 625개
        📌 총합 = 1 + 5 + 25 + 125 + 625 = 781개
        즉, 'A'로 시작하는 단어 블록의 크기는 781
        → 첫 글자가 'E'면 앞에 'A'로 시작하는 781개의 단어가 앞서 있다는 뜻
    3. 즉 각 자릿수마다 자리별 이전 경우의 수를 곱해 계산 가능

해결 과정 및 코드

핵심 아이디어

  1. 각 자릿수마다 앞에 오는 알파벳 개수를 계산하기 위해 고정된 가중치(per)를 활용
  2. "AEIOU"에서 해당 문자의 인덱스를 구해, 가중치와 곱한 값을 누적
  3. 단어마다 자기 자신도 포함되므로 마지막에 +1을 추가

코드

시간 복잡도 : O(N)

class Solution {
    public int solution(String word) {
        int answer = 0, per = 3905;

        // 자리별 가중치: [781, 156, 31, 6, 1]
        // 자리별 가중치 계산용 (자릿수가 올라갈수록 1/5씩 줄어듦으로 per /= 5)
        // 3905 = 5^5 + 5^4 + 5^3 + 5^2 + 5^1
        for (String s : word.split("")) {
            answer += "AEIOU".indexOf(s) * (per /= 5) + 1; // 자기 자신 포함 +1
        }

        return answer;
    }
}

'Algorithm > Coding Test Records' 카테고리의 다른 글

[프로그래머스] 정수 삼각형 (DFS+메모이제이션)  (0) 2025.06.08
[프로그래머스] 정수 삼각형 (DP)  (1) 2025.06.07
[프로그래머스] 모음사전 (DFS)  (0) 2025.06.04
[프로그래머스] 전력망을 둘로 나누기 (DFS)  (0) 2025.06.03
[프로그래머스] 전력망을 둘로 나누기 (유니온 파인드 Disjoint Set)  (0) 2025.06.02
'Algorithm/Coding Test Records' 카테고리의 다른 글
  • [프로그래머스] 정수 삼각형 (DFS+메모이제이션)
  • [프로그래머스] 정수 삼각형 (DP)
  • [프로그래머스] 모음사전 (DFS)
  • [프로그래머스] 전력망을 둘로 나누기 (DFS)
Celion
Celion
오늘도 평소처럼 화이팅!
  • Celion
    Orion Log
    Celion
  • 전체
    오늘
    어제
    • 전체 글 (144)
      • Uncompiled Thoughts (8)
        • 네이버 부스트캠프 10기 (5)
      • CS 기초부터 한 걸음씩 (34)
      • Code Odyssey (22)
      • Algorithm (77)
        • Coding Test Records (63)
      • Git (3)
      • reference (0)
  • 블로그 메뉴

    • 태그
    • 방명록
  • 태그

    Level3
    알고리즘고득점kit
    greedy
    java
    boostcamp
    백준
    문법정리
    Level2
    Kotlin
    시뮬레이션
    코테
    프로그래머스
  • 최근 글

  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
Celion
[프로그래머스] 모음사전 (수학)
상단으로

티스토리툴바