ALGORITHM/Java algorithm

[Java][LeetCode] #1641. Count Sorted Vowel String | O(n)

호이호이호잇 2024. 4. 27. 14:29
728x90
반응형

내가 너무나 약한 DP에서 랜덤으로 풀어보았다.

근데 DP로 푼지 아닌지 모르겠음

 

문제 / 예제 / 제한조건

 

풀이 

패턴을 찾느라고 거의 1시간은 쓴 것 같다.

뇌가 잘 안돌아가서 나는 직접 다 적어봐야 패턴을 찾을 수 있다..

뭐 경험이 부족한 탓이겠지!?

 

그렇게해서 찾은 패턴!

 

n = 1 일 때 각자 개수는

A E I O U
1 1 1 1 1

 

n = 2 일 때, 각각의 개수는

A E I O U
5 4 3 2 1

 

n = 3 일 때, 각각의 개수는

A E I O U
15 10 6 3 1

 

이렇게 구성되어 있다.

 

규칙이 보인다 +_+

바로바로

A E I O U
n=2 일때의 A + E + I + O + U n=2 일때의 E + I + O + U n=2 일때의  I + O + U n=2 일때의  O + U n=2 일때의  U
15 10 6 3 1

 

그렇게 구현해보면~

class Solution {
    public int countVowelStrings(int n) {
        int[] Aeiou = {1,1,1,1,1};
        for(int i=0; i<n; i++) {
            Aeiou[0] = Aeiou[0] + Aeiou[1]+ Aeiou[2]+ Aeiou[3]+ Aeiou[4];
            Aeiou[1] = Aeiou[1] + Aeiou[2]+ Aeiou[3]+ Aeiou[4];
            Aeiou[2] = Aeiou[2] + Aeiou[3]+ Aeiou[4];
            Aeiou[3] = Aeiou[3] + Aeiou[4];
        }

        return Aeiou[0];
    }
}
Time Complexity: O(n)
Space Complexity: O(1)

 

깔끔한 결과를 볼 수 있다!

 

깔꿈깔꿈

728x90
반응형