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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

 

 

 

 

๋ฌธ์ œ

  • ์‚ฌ์ „์— ์•ŒํŒŒ๋ฒณ ๋ชจ์Œ 'A', 'E', 'I', 'O', 'U'๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”, ๊ธธ์ด 5 ์ดํ•˜์˜ ๋ชจ๋“  ๋‹จ์–ด๊ฐ€ ์ˆ˜๋ก
  • ์‚ฌ์ „์—์„œ ์ฒซ ๋ฒˆ์งธ ๋‹จ์–ด๋Š” "A"์ด๊ณ , ๊ทธ๋‹ค์Œ์€ "AA"์ด๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋‹จ์–ด๋Š” "UUUUUโ€
  • ๋‹จ์–ด ํ•˜๋‚˜ word๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ด ๋‹จ์–ด๊ฐ€ ์‚ฌ์ „์—์„œ ๋ช‡ ๋ฒˆ์งธ ๋‹จ์–ด์ธ์ง€ return

 

์ž…์ถœ๋ ฅ ์˜ˆ

  • word : "AAAAE"
  • result : 6

 

 

ํ’€์ด

  • ์ฃผ์–ด์ง„ ๋ชจ์Œ์„ ์—ฌ๋Ÿฌ ๊ฐœ ์„ ํƒํ•ด์„œ ๋ฐฐ์น˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต ์ˆœ์—ด์„ ์“ด๋‹ค. 
    • 5ฮ 1, 5ฮ 2, 5ฮ 3, 5ฮ 4, 5ฮ 5์„ ๊ฐ๊ฐ ๊ตฌํ•œ๋‹ค.
    • N์ด 5๋กœ ์ž‘์•„์„œ ์ˆœ์—ด์„ ์จ๋„ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚˜์งˆ ์•Š๋Š”๋‹ค.
  • ์ค‘๋ณต ์ˆœ์—ด์˜ ๊ฒฐ๊ณผ๋ฅผ ArrayList์— ๋‹ด๋Š”๋‹ค.
    • ์ค‘๋ณต๋˜๋Š” ๊ฒฐ๊ณผ ์—†์œผ๋ฏ€๋กœ HashSet์„ ๊ตณ์ด ์“ธ ํ•„์š” ์—†๋‹ค.
  • ArrayList์— ๋‹ด๊ธด ๋ฌธ์ž์—ด๋“ค์„ ์‚ฌ์ „์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค(์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ)
  • ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ word๊ฐ€ ์‚ฌ์ „์—์„œ ๋ช‡ ๋ฒˆ์งธ ๋‹จ์–ด์ธ์ง€ ์นด์šดํŒ…ํ•œ๋‹ค.

 

 

 

 

 

์ฝ”๋“œ

import java.util.*;

class Solution {
    static String[] vowels = {"A", "E", "I", "O", "U"};
    static String[] result;
    static List<String> list;
    
    public int solution(String word) {
        list = new ArrayList<>();
        
        for(int i = 1; i <= 5; i++) {
            result = new String[i];
            puermutation(0, i, word);
        }
        
        Collections.sort(list); //์ •๋ ฌ

        //์ด ๋‹จ์–ด๊ฐ€ ์‚ฌ์ „์—์„œ ๋ช‡ ๋ฒˆ์งธ ๋‹จ์–ด์ธ์ง€ ์นด์šดํŒ…
        int answer = 1;
        for(String str : list) {
            if(str.equals(word)) {
                break;
            }
            answer++;
        }
        
        return answer;
    }
    
    public void puermutation(int depth, int num, String word) {
        if(depth == num) {
            //์™„์„ฑ๋œ ๋‹จ์–ด ์ €์žฅ
            String voca = "";
            for(String str : result) {
                voca += str;
            }
            
            list.add(voca);
            
            return;
        }
        
        for(int i = 0; i < 5; i++) {
            result[depth] = vowels[i];
            puermutation(depth + 1, num, word);
        }
    }
}

 

 

 

 

 

๊ฒฐ๊ณผ

 

 

 

 

 

๋ฐฐ์šด์ 

giraffe_