728x90

 

 

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

풀이 - 나의 생각

이런 문제는 수학적으로 푸는게 가장 좋다.

 

주어진 문자열이 사전에서 몇번째에 위치하는지를 찾는다.

 

예로

 

단어 순서
A 1
AA 2
AAAAA 5
AAAAE 6
AAAE 10

 

이런식이다.

 

5자리가 최대로

 

A부터 시작해서 UUUUU로 끝난다.

 

AAAAA, AAAAE, AAAAI, AAAAO, AAAAU

 

이렇게 A, E, I, O, U 순으로 진행되는데

 

자릿수에 따라 1 + i( A, E, I, O, U 순서)* 5 로 단어의 위치가 증가하는 것을 볼 수 있다.

 

781, 156, 31, 6, 1 이런 방식으로 증가합니다.

 

5의 자리는 1씩 증가

예) AAAAA = 5, AAAAE = 6

 

4의 자리는 6씩 증가

예) AAAA = 4, AAAE = 10

 

3의 자리는 31씩 증가

예) AAA = 3, AAE = 34

 

2의 자리는 156씩 증가

예) AA = 2, AE = 158

 

1의 자리는 781씩 증가합니다.

예) A = 4, E = 782

 

이걸 수식화 하면

 

answer+= 1 + words.indexOf(A,E,I,O,U 순서)*(전체 단어 수/=5);

 

이렇게 됩니다.

 

per은 전체 단어의 개수입니다.

 

코드

 

import java.util.*;

class Solution {
    public int solution(String word) {
        int answer = 0, per = 3905;
        String words = "AEIOU";
        
        for(String s : word.split("")){
            answer+= 1 + words.indexOf(s)*(per/=5);
        }
        
        return answer;
    }
}

 

 

 

 

 

 

 

다음에 또 봐요

 

+ Recent posts