떵호
seongho'Dev
떵호
전체 방문자
오늘
어제
  • 분류 전체보기 (116)
    • 회고 (2)
    • Algorithm (74)
      • 프로그래머스 (65)
      • 백준(BOJ) (2)
      • Note (7)
    • 기술독서 (25)
      • Clean Code (11)
      • 자바의 정석 (8)
      • 대규모 시스템 설계 기초 (6)
    • Computer Science (1)
      • Operating System (1)
    • Typescript (1)
    • JAVA (0)
    • Spring (6)
      • JPA (6)
    • AWS (2)
    • Git (2)
    • Etc (2)

블로그 메뉴

  • github

티스토리

태그

  • 완전탐색
  • 코딩테스트 준비
  • 프로그래머스
  • 카카오 코테
  • 구현
  • Clean Code
  • JPA
  • 클린코드
  • 알고리즘
  • 자바의 정석
hELLO · Designed By 정상우.
떵호

seongho'Dev

[JAVA 풀이] 프로그래머스 - 모음사전 (Level 2)
Algorithm/프로그래머스

[JAVA 풀이] 프로그래머스 - 모음사전 (Level 2)

2022. 4. 6. 15:49
728x90
 

코딩테스트 연습 - 모음사전

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

programmers.co.kr

📝 문제 설명

사전에 알파벳 모음 '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
2   AA
3   AAA
4   AAAA
5   AAAAA
6   AAAAE
7   AAAAU
   .
   .
   .
10  AAAE
11  AAAEA
   .
   .
   .
16  AAAI
   .
   .
   .
22  AAAO
   .
   .
   .
28  AAAU
   .
   .
   .
34  AAE

마지막 자리면 문자가 바뀔 때마다 1씩 증가하고, 4번째 자리인 경우는 6씩 증가하고, 3번째 자리인 경우는 31씩 증가하는 것을 볼 수 있다.

x 가 0이 아닐 때 : f(x) = f(x - 1) + 5^x

f(0) = 1
f(1) = 1 + 5^1 = 6
f(2) = 6 + 5^2 = 31
f(3) = 31 + 5^3 = 156
f(4) = 156 + 5^4 = 781

따라서 위와 같은 식이 나오게 된다.

그리고 각 자릿수에 대한 증가율과 대치된 문자의 값을 곱한 다음 answer에 더해주면 된다.

💻 코드

class Solution {

    static final String MAPPING = "AEIOU";
    static final int[] RATE_OF_INCREASE = {781, 156, 31, 6, 1};

    public int solution(String word) {
        int answer = word.length();

        for (int i = 0; i < word.length(); i++) {
            answer += (RATE_OF_INCREASE[i] * MAPPING.indexOf(word.charAt(i)));
        }

        return answer;
    }
}
728x90
저작자표시 (새창열림)

'Algorithm > 프로그래머스' 카테고리의 다른 글

[JAVA 풀이] 프로그래머스 - 이진 변환 반복하기 (Level2)  (0) 2022.04.07
[JAVA 풀이] 프로그래머스 - 캐시 (2018 KAKAO BLIND RECRUITMENT)  (0) 2022.04.07
[JAVA 풀이] 프로그래머스 - 전력망을 둘로 나누기 (Level 2)  (1) 2022.04.01
[JAVA 풀이] 프로그래머스 - 교점에 별 만들기 (Level2)  (0) 2022.03.31
[JAVA 풀이] 프로그래머스 - 구명보트 (Level2)  (0) 2022.03.23
    'Algorithm/프로그래머스' 카테고리의 다른 글
    • [JAVA 풀이] 프로그래머스 - 이진 변환 반복하기 (Level2)
    • [JAVA 풀이] 프로그래머스 - 캐시 (2018 KAKAO BLIND RECRUITMENT)
    • [JAVA 풀이] 프로그래머스 - 전력망을 둘로 나누기 (Level 2)
    • [JAVA 풀이] 프로그래머스 - 교점에 별 만들기 (Level2)
    떵호
    떵호

    티스토리툴바