Tenka1 Programmer Beginner Contest 2019

Tenka1 Programmer Beginner Contest 2019 爆死しました。

A - On the Way

  • aからbに向かうときにcを通過するか否か。
# A
a, b, c = map(int, input().split())
if a <= c <= b or a >= c >= b:
    print("Yes")
else:
    print("No")

B - *e**** ********e* *e****e* ****e**

  • n文字の文字列sのk文字目以外の文字を*にする。
# B
n = int(input())
s = str(input())
k = int(input())

c = s[k-1]
st = ""
for char in list(s):
    if char != c:
        st = st + "*"
    else:
        st = st + char
print(st)

C - Stones

  • ある地点から左側を全て白(".")、右側を全て黒("#")にしたとき、最も変化させるコストが少なくなる物を探す。
  • ある地点より左にある黒の数と白の数の和が最小になるように全探索する。
  • 左にある黒の数と右にある白の数を更新して保持しておくとO(N)になる。
# C after
n = int(input())
s = str(input())

count_dot = 0
for i in range(n):
    if s[i] == ".":
        count_dot += 1
count_sharp = 0

ans = n
for i in range(n):
    ans = min(ans, count_dot+count_sharp)
    if s[i] == "#":
        count_sharp += 1
    else:
        count_dot -= 1
ans = min(ans, count_dot+count_sharp)
print(ans)

D以降は難しい...

ビギナー用のコンテストに参加したつもりが、ノーマルの方に出場し、Cで爆死したので気をつけようと思った。