u++の備忘録

AtCoder Grand Contest 031 AをPythonで解く

AtCoder Grand Contest 031」に出て、1完でした。

f:id:upura:20190316221157j:plain

atcoder.jp

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)

復習

befs-anne.hatenablog.com

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)