AtCoder Beginner Contest 401の解説記事です。
ABC401 A – Status Code
問題
問題文の要約は以下の通りです。
問題の要約
\(100\) 以上 \(999\) 以下の整数 \(S\) が与えられます。\(S\) が \(200\) 以上 \(299\) 以下のときSuccess
、そうでないときFailure
と出力せよ。
解説1
if
文を用いて \(S\) が \(200\) 以上 \(299\) 以下かどうか判定する。
解説
入力を受け取ります。
# 入力
S=int(input())
if
文を用いて\(S\) が \(200\) 以上 \(299\) 以下かどうか判定します。
# 200 以上 299 以下かどうか
if 200<=S<=299:
print('Success')
else:
print('Failure')
解答
# 入力
S=int(input())
# 200 以上 299 以下かどうか
if 200<=S<=299:
print('Success')
else:
print('Failure')
解説2
文字列として受け取り、\(S\) の \(1\) 文字目が \(2\) であるかどうか判定する。
解説
入力を文字列として受け取ります。
# 入力
S=input()
\(S\) の \(1\) 文字目が \(2\) であるかどうか判定します。
# S の 1 文字目が 2 であるかどうか?
if S[0]=='2':
print('Success')
else:
print('Failure')
解答
# 入力
S=input()
# S の 1 文字目が 2 であるかどうか?
if S[0]=='2':
print('Success')
else:
print('Failure')
解説3
\(S\) を \(100\) で割った商が \(2\) であるかどうか判定する。
解説
入力を受け取ります。
# 入力
S=int(input())
\(S\) を \(100\) で割った商が \(2\) であるかどうか判定します。
# S を 100で割った商が 2 であるかどうか?
if S//100==2:
print('Success')
else:
print('Failure')
解答
# 入力
S=int(input())
# S を 100で割った商が 2 であるかどうか?
if S//100==2:
print('Success')
else:
print('Failure')
ABC401 B – Unauthorized
問題
問題文の要約は以下の通りです。
問題の要約
「ログインしていない状態」であるウェブサイトに対して \(N\) 回の操作を行いました。
- \(S_i =\)
login
:ログイン操作を行い、以降は「ログインしている状態」になる。 - \(S_i =\)
logout
:ログアウト操作を行い、以降は「ログインしていない状態」になる。 - \(S_i =\)
public
:公開ページにアクセスする。 - \(S_i =\)
private
:非公開ページにアクセスする。
「ログインしていない状態」で private
ページにアクセスしたとき、認証エラーが発生します。認証エラーとなった回数を求めよ。
解説
ログインしているかを表すフラグでログインしているかを管理する。
解説
入力を受け取ります。
# 入力
N=int(input())
ログインしているかを表すフラグislogin
を用意します。
# ログインしているかを表すフラグ
islogin=False
答えを表す変数をans
とします。
# 答えを表す変数
ans=0
\(N\) 回入力を受け取り、if文で場合分けを行います。その際、ログインしているかを表すフラグを更新します。ログインしていない状態で非公開ページにアクセスした場合はans
に1
を加えます。最後に答えを出力します。
for _ in range(N):
S=input()
# ログインする
if S=='login':
islogin=True
# ログアウトする
elif S=='logout':
islogin=False
# ログインしていない状態で非公開ページにアクセスする
elif S=='private' and not islogin:
ans+=1
# 答えを出力
print(ans)
解答
# 入力
N=int(input())
# ログインしているかを表すフラグ
islogin=False
# 答えを表す変数
ans=0
for _ in range(N):
S=input()
# ログインする
if S=='login':
islogin=True
# ログアウトする
elif S=='logout':
islogin=False
# ログインしていない状態で非公開ページにアクセスする
elif S=='private' and not islogin:
ans+=1
# 答えを出力
print(ans)