AtCoder Grand Contest 031 AをPythonで解く
「AtCoder Grand Contest 031」に出て、1完でした。
A - Colorful Subsequence(200点)
- 総当たりで解くとTLE
- アルファベットを1文字ずつ数え上げて計算する
N = int(input()) S = input() M = 10**9 + 7 cnt = [0] * 26 for i in range(N): cnt[ord(S[i]) - ord('a')] += 1 ans = 1 for i in range(26): ans *= (cnt[i] + 1) ans %= M print(ans - 1)
復習
cnt[ord(S[i]) - ord('a')]の部分、cntをdefaultdictで持っておくと実装がスッキリしますよ
— 杏仁まぜそば (@an_nindouph) March 16, 2019
好みの問題と言われるとそれまでですが🙄
from collections import defaultdict N = int(input()) S = input() M = 10**9 + 7 count_dict = defaultdict(int) for s in S: count_dict[s] += 1 ans = 1 for v in count_dict.values(): ans *= (v + 1) ans %= M print(ans - 1)