過去問精選 10 問やってみる 6
前までの続きです
ABC 071 B - Not Found (アルファベットは結局 0 〜 25 という値と同じことです)
https://atcoder.jp/contests/abc071/tasks/abc071_b
各文字のカウンターを作りました、もっと楽にできなかっただろうか・・・
S = input() ans = "None" W = {"a":0, "b":0, "c":0, "d":0,"e":0,"f":0,"g":0,"h":0,"i":0,"j":0,"k":0,"l":0,"m":0,"n":0,"o":0,"p":0,"q":0,"r":0,"s":0,"t":0,"u":0,"v":0,"w":0,"x":0,"y":0,"z":0} P = "abcdefghijklmnopqrstuvwxyz" for i in S: W[i] += 1 for p in P: if W[p] == 0: ans = p break print(ans)
ABC 061 B - Counting Roads (ちょっとした応用問題です)
https://atcoder.jp/contests/abc061/tasks/abc061_b
pythonで順番を保持したハッシュがあったはず、それをつかったほうがスマート??
N, M = map(int, input().split()) load = {} for i in range(N): load[i] = 0 for i in range(M): a, b = map(int, input().split()) load[a-1] += 1 load[b-1] += 1 for i in range(N): print(load[i])
ABC 047 B - Snuke's Coloring 2 (ABC Edit) (二次元配列を用意します)
https://atcoder.jp/contests/abc047/tasks/abc047_b
これ、めちゃくちゃドはまりしたので別で書きます
ABC 091 B Two Colors Card Game (std::map が使えると楽です)
https://atcoder.jp/contests/abc091/tasks/abc091_b
setをうまく使ったけど、もっと簡略化できた気がする・・・
N = int(input()) nn = [] mm = [] ll = [] ans = 0 for i in range(N): k = input() nn.append(k) ll.append(k) M = int(input()) l_s = set(ll) for i in range(M): k = input() mm.append(k) for i in l_s: count = 0 for j in nn: if i == j: count += 1 for j in mm: if i == j: count -= 1 if count > ans: ans = count print(ans)
ABC 081 C - Not so Diverse (C 問題ですが十分挑めます、バケット法とソートの複合問題です)
https://atcoder.jp/contests/abc081/tasks/arc086_a
はじめて順序付きの配列を試してみました
もっと簡単な方法があったかも??
参考:
https://note.nkmk.me/python-collections-ordereddict/
from collections import OrderedDict N, K =map(int, input().split()) a = list(map(int, input().split())) p = OrderedDict() for i in a: if i not in p: p[i] = 1 else: p[i] +=1 #print(p) p_rev = OrderedDict( sorted(p.items(), key=lambda x: x[1]) ) #print(p_rev) #print(len(p_rev)) count = 0 sum = 0 for i in p_rev.values(): if len(p_rev) - count > K: sum += i count += 1 else: break print(sum)
以上