99클럽 코테 스터디 16일차 TIL - [프로그래머스] 모음사전 (Java)

seri·2024년 8월 6일
0

코딩테스트 챌린지

목록 보기
41/62

📌 오늘의 학습 키워드

[프로그래머스] 모음사전 (Java)
https://school.programmers.co.kr/learn/courses/30/lessons/84512

📌 공부한 내용 본인의 언어로 정리하기

문제 탐색하기

입력 : 단어 하나 word
출력 : 이 단어가 사전에서 몇 번째 단어인지 반환

가능한 시간복잡도

O(n)

알고리즘 선택

완전 탐색

📌 코드 설계하기

각 자릿수의 가중치를 미리 계산해서 저장하고 반환한다

📌 오늘의 회고

어떤 문제가 있었고, 나는 어떤 시도를 했는지

어떻게 해결했는지

무엇을 새롭게 알았는지

내일 학습할 것은 무엇인지

구현

📌 정답 코드

class Solution {
    // 모음과 그에 해당하는 인덱스를 저장하는 배열
    private static final char[] VOWELS = {'A', 'E', 'I', 'O', 'U'};
    
    // 각 자릿수의 가중치를 미리 계산해서 저장
    private static final int[] WEIGHTS = {781, 156, 31, 6, 1};  // 5^4, 5^3, 5^2, 5^1, 5^0의 합으로 계산

    public int solution(String word) {
        int answer = 0;

        // 각 글자마다 처리
        for (int i = 0; i < word.length(); i++) {
            // 각 글자의 인덱스를 구함
            int index = getIndex(word.charAt(i));
            // 위치 계산
            answer += index * WEIGHTS[i] + 1;
        }

        return answer;
    }

    // 주어진 문자에 해당하는 인덱스를 반환
    private int getIndex(char ch) {
        for (int i = 0; i < VOWELS.length; i++) {
            if (VOWELS[i] == ch) {
                return i;
            }
        }
        return -1; // 주어진 문자가 모음에 포함되지 않는 경우
    }

}

profile
꾸준히 정진하며 나아가기

0개의 댓글