숫자 n이 있다고 가정하고 모음(a, e, i, o, u)으로만 구성된 크기가 n인 문자열의 수를 찾아야 하고 사전순으로 정렬되어 있습니다. 모든 유효한 인덱스 i에 대해 s[i]가 알파벳에서 s[i+1]과 같거나 그 앞에 올 때 문자열 s가 사전순으로 정렬된다고 말할 수 있습니다.
따라서 입력이 n =2와 같으면 ["aa", "ae", "ai", "ao", "au", "ee", "ei"와 같은 문자열이 많기 때문에 출력은 15가 됩니다. ", "eo", "eu", "ii", "io", "iu", "oo", "ou", "uu"].
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n이 1과 같으면
- 반환 5
- count :=크기가 6이고 처음에는 1로 채워진 배열
- 3에서 n 사이의 i에 대해 다음을 수행합니다.
- count[1] :=count[1]+count[2]+count[3]+count[4]+count[5]
- count[2] :=count[2]+count[3]+count[4]+count[5]
- count[3] :=count[3]+count[4]+count[5]
- 개수[4] :=개수[4]+개수[5]
- 총계:=0
- 1~5 범위의 i에 대해 다음을 수행합니다.
- total :=total + i*count[i]
- 총 수익
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(n): if n==1: return 5 count = [1 for i in range(6)] for i in range(3,n+1): count[1] = count[1]+count[2]+count[3]+count[4]+count[5] count[2] = count[2]+count[3]+count[4]+count[5] count[3] = count[3]+count[4]+count[5] count[4] = count[4]+count[5] total = 0 for i in range(1,6): total += i*count[i] return total n = 2 print(solve(n))
입력
2
출력
15