teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

別解を追加

2017/10/02 06:10

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -14,4 +14,28 @@
14
14
 
15
15
  # A 10
16
16
  # C 10
17
+ ```
18
+
19
+ #### 別解
20
+
21
+ ファイル走査中に、最大得票数の決定と、候補者リストを作成する例です。
22
+ 接戦だとリスト生成が多数回発生しますが、先の回答よりは処理時間は短くなるはずです。
23
+
24
+ ```Python
25
+ f = open("votes.txt")
26
+ votes = {}
27
+ who = []
28
+ max_v = -1
29
+ for name in f:
30
+ name = name[:-1]
31
+ votes[name] = votes.get(name, 0) + 1
32
+ if max_v < votes[name]:
33
+ max_v = votes[name]
34
+ who.clear() # これまでの候補をクリア
35
+
36
+ if max_v == votes[name]:
37
+ who.append(name)
38
+
39
+ f.close()
40
+ print('{0:s} {1:d}票'.format(str(who), max_v))
17
41
  ```

1

結果を追記

2017/10/02 06:10

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -11,4 +11,7 @@
11
11
  if v < v_max:
12
12
  break
13
13
  print(k,v)
14
+
15
+ # A 10
16
+ # C 10
14
17
  ```