【AtCorderメモ】AtCoder Beginner Contest 252

現在の目標は、茶色なのでABCの問題A~Dを安定的に解けること。

AtCoder Beginner Contest 252の問題A~Cの内容整理。 ※問題Dも整理できたら、追記する。

成績

感想

  • 問題Cに時間をかけてしまい、3問(問題A,~,C)しか解けなかった。
  • せめて、問題Dは解けたらな…

コンテスト成績証

項目 結果
順位 4616th / 9995
パフォーマンス 560
レーティング 466476 (+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)
参考

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)
参考