[Java] 모음 사전

allzeroyou·2025년 1월 22일
0

Java-Algorithm

목록 보기
14/26
post-thumbnail

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

문제 설명

알파벳 모음 A, E, I, O ,U만 사용해 만들 수 있는 길이 5이하의 모든 단어 수록됨.

사전에서 첫번째 단어는 A, 그 다음은 AA, 마지막 단어는 UUUUU.

단어 하나 word가 매개변수로 주어질때, 이 단어가 사전에서 몇번째 단어인지 return.

입출력 예

wordresult
"AAAAE"6
"AAAE"10
"I"1563
"EIO"1189

생각

[A, E, I, O, U] 로 완전 탐색해 단어 만들기.
단어가 만들어지는 기준은
A, AA, AAA, AAAA, AAAAA 그 다음
AAAAE, AAAAI, AAAAO, AAAAU 그 다음
AAAE ... 이다.

주어진 word가 사전에서 몇번째 인지 구하려면 사전을 만드는 함수가 필요하다.

근데 사전을 만드는 기준을 잘 모르겠다.

풀이

굳이 규칙을 찾지말고, 그냥 1~5개까지 가능한 조합의 모든 단어를 생성 후 사전에 저장한다, 그 다음 word가 해당 사전에서 몇번째 인지 구하면 된다!

  1. 알파벳 조합 생성-> 재귀함수 사용

recur(String cur, int maxLeng)

  • cur: 현재 단어
  • maxLeng: 최대길이(5까지 가능)
  1. List에서 해당 요소(word)의 인덱스 반환
  • List.indexOf(word) 사용

정답코드

import java.util.*;

class Solution {
    String[] mo = {"A", "E", "I", "O", "U"};
    List<String> dic = new ArrayList<>();
    
    public int solution(String word) {
        int answer = 0;
        
        // 1. 알파벳 조합 생성
        recur("", 5);
        
        // 2. word의 인덱스+1 반환
        return dic.indexOf(word)+1;
    }
    
    private void recur(String cur, Integer maxLeng){
        if(cur.length()>0){
            dic.add(cur);
        }
        if(cur.length() == maxLeng){
            return;
        }
        for(String m: mo){
            recur(cur+m, maxLeng);
        }
    }
}

자바에서 {} vs [] 차이

자바에서 []와 {}는 배열과 관련하여 서로 다른 목적으로 사용

  1. 대괄호 []:
    배열 선언: 변수가 배열임을 나타냅니다.
    예: int[] numbers;
    배열 요소 접근: 배열의 특정 인덱스에 접근할 때 사용합니다.
    예: numbers = 1;

  2. 중괄호 {}:
    배열 초기화: 배열의 요소들을 나열할 때 사용합니다.
    예: int[] numbers = {1, 2, 3, 4, 5};
    다차원 배열 초기화: 중첩된 중괄호를 사용합니다.
    예: int[][] matrix = {{1, 2}, {3, 4}};

  • 주요 차이점

[]는 배열의 타입 선언하거나 요소 접근할 때 사용합니다.
{}는 배열의 내용을 초기화할 때 사용합니다.

배열을 선언하고 초기화할 때는 두 가지를 함께 사용합니다:
타입[] 변수명 = {요소1, 요소2, ...};

profile
모든 건 zero 부터, 차근차근 헛둘헛둘

0개의 댓글