【AtCorderメモ】AtCoder Beginner Contest 252
現在の目標は、茶色なのでABCの問題A~Dを安定的に解けること。
AtCoder Beginner Contest 252の問題A~Cの内容整理。 ※問題Dも整理できたら、追記する。
成績
感想
- 問題Cに時間をかけてしまい、3問(問題A,~,C)しか解けなかった。
- せめて、問題Dは解けたらな…
コンテスト成績証
項目 | 結果 |
---|---|
順位 | 4616th / 9995 |
パフォーマンス | 560 |
レーティング | 466 → 476 (+10) |
提出結果
問題 | 結果 | 得点 | 作業時間 |
---|---|---|---|
A | AC | 100 | 2:54 |
B | AC←WA | 200(1) | 16:54 |
C | AC←WA | 300(1) | 72:42 |
合計 | 600(2) |
A. ASCII code
Point
- 文字列と数値(asciiコード)の変換
ソースコード
n = int(input()) ans = chr(n) print(ans)
参考
B. Takahashi's Failure
Point
- list の最大値のインデックス取得
- list 同士の重複チェック
- list のインデックスは、0から始まる(ミスった涙)
ソースコード
n,k = map(int, input().split()) a_list = list(map(int, input().split())) b_list = list(map(int, input().split())) max_value = max(a_list) a_list_idx = [idx+1 for idx, value in enumerate(a_list) if value == max_value] chofuku_flag = len(set(a_list_idx) & set(b_list)) !=0 ans = 'Yes' if chofuku_flag else 'No' print(ans)
参考
- [解決!Python]リストの内包表記と「if」を組み合わせるには:解決!Python - @IT
- 2 つのリストに重複する要素を抽出する (set と&) | まくまくPythonノート
- Pythonの三項演算子(条件演算子)でif文を一行で書く | note.nkmk.me
C. Slot Strategy
Point
- 問題文がよく分からん...(リール?, 表示されている文字?)
- (読解問題)同じ時間に押せるボタンは1つだけなので、押したい時間が被ったら10秒待たないとダメ。
- そこまで難しくないが、作業内容を整理する必要あり
2≤N≤100
なので、全探索でもOK
ソースコード
import collections n = int(input()) digit_index_lists = [] #各リールの0~9の数字が先頭になるまでにかかる時間 for i in range(n): s_list = list(map(int, list(input()))) digit_index_list = [] for j in range(10): digit_index_list.append(s_list.index(j)) digit_index_lists.append(digit_index_list) #0~9の数字が揃うまでの必要時間を計算 ans = 10000 for j in range(10): digit_index_lists_j = [x[j] for x in digit_index_lists] #数字が揃うまでの必要時間は、最遅のリールに依存 tmp_max = 0 conter = collections.Counter(digit_index_lists_j) for i_key in conter.keys(): tmp = i_key + (conter[i_key]-1)*10 if tmp_max < tmp: tmp_max = tmp if ans > tmp_max: ans = tmp_max print(ans)