結果
問題 | No.145 yukiover |
ユーザー | mkawa2 |
提出日時 | 2020-01-22 22:57:46 |
言語 | Python3 (3.12.2 + numpy 1.26.4 + scipy 1.12.0) |
結果 |
AC
|
実行時間 | 34 ms / 5,000 ms |
コード長 | 1,907 bytes |
コンパイル時間 | 85 ms |
コンパイル使用メモリ | 10,916 KB |
実行使用メモリ | 8,604 KB |
最終ジャッジ日時 | 2023-09-23 03:55:08 |
合計ジャッジ時間 | 2,175 ms |
ジャッジサーバーID (参考情報) |
judge13 / judge14 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 16 ms
7,988 KB |
testcase_01 | AC | 17 ms
8,084 KB |
testcase_02 | AC | 16 ms
8,128 KB |
testcase_03 | AC | 16 ms
7,972 KB |
testcase_04 | AC | 17 ms
8,148 KB |
testcase_05 | AC | 17 ms
8,016 KB |
testcase_06 | AC | 17 ms
7,956 KB |
testcase_07 | AC | 17 ms
8,032 KB |
testcase_08 | AC | 17 ms
7,996 KB |
testcase_09 | AC | 17 ms
8,000 KB |
testcase_10 | AC | 16 ms
8,084 KB |
testcase_11 | AC | 34 ms
8,444 KB |
testcase_12 | AC | 33 ms
8,500 KB |
testcase_13 | AC | 33 ms
8,548 KB |
testcase_14 | AC | 30 ms
8,540 KB |
testcase_15 | AC | 27 ms
8,516 KB |
testcase_16 | AC | 23 ms
8,436 KB |
testcase_17 | AC | 33 ms
8,408 KB |
testcase_18 | AC | 32 ms
8,512 KB |
testcase_19 | AC | 32 ms
8,428 KB |
testcase_20 | AC | 32 ms
8,404 KB |
testcase_21 | AC | 33 ms
8,464 KB |
testcase_22 | AC | 33 ms
8,604 KB |
testcase_23 | AC | 33 ms
8,560 KB |
ソースコード
import sys sys.setrecursionlimit(10 ** 6) def II(): return int(sys.stdin.readline()) def SI(): return sys.stdin.readline()[:-1] def main(): n = II() s = SI() ans = 0 # アルファベットを次のように分類して、個数を数える # yより後(1文字で辞書順が後なので、すぐにansに加える) # 0:y # 1:uとyの間 # 2:u # 3:kとuの間 # 4:k # 5:iとkの間 # 6:i # 7:iより前 cnt = [0] * 9 oy = ord("y") ou = ord("u") ok = ord("k") oi = ord("i") for c in s: a = ord(c) if a > oy: ans += 1 continue elif a == oy: i = 0 elif a > ou: i = 1 elif a == ou: i = 2 elif a > ok: i = 3 elif a == ok: i = 4 elif a > oi: i = 5 elif a == oi: i = 6 else: i = 7 cnt[i] += 1 # それぞれのパターンごとにyukiより辞書順が後ろのものを作っていく # 2文字(y? ?はuより後) w = min(cnt[0], cnt[1]) ans += w for i in [0, 1]: cnt[i] -= w # 3文字(yu? ?はkより後) w = min(cnt[0], cnt[2], cnt[3]) ans += w for i in [0, 2, 3]: cnt[i] -= w # 4文字(yuk? ?はiより後) w = min(cnt[0], cnt[2], cnt[4], cnt[5]) ans += w for i in [0, 2, 4, 5]: cnt[i] -= w # 5文字(yuki? ?はiより前) w = min(cnt[0], cnt[2], cnt[4], cnt[6], cnt[7]) ans += w for i in [0, 2, 4, 6, 7]: cnt[i] -= w # yukii w = min(cnt[0], cnt[2], cnt[4], cnt[6] // 2) ans += w for i in [0, 2, 4]: cnt[i] -= w # yukk w = min(cnt[0], cnt[2], cnt[4] // 2) ans += w for i in [0, 2]: cnt[i] -= w # yuu w = min(cnt[0], cnt[2] // 2) ans += w cnt[0] -= w # yy ans += cnt[0] // 2 print(ans) main()