ora_yoshito
@ora_yoshito (Yoshito Inoue)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

AtCoder Beginner Contest B問題 解説して欲しいです🤲

解決したいこと

AtCoder では現在、 ABC , ARC , AGC , AHC の 4 つのコンテストが定期的に開催されています。

AtCoder で現在定期的に開催されているコンテストは S1, S2、 S3 とあと1つは何ですか?

制約
S1, S2, S3はそれぞれ、 ABC , ARC , AGC , AHC のいずれかである。
S1, S2, S3は相異なる。

入力例

ARC
AGC
AHC

解説

cand=["ABC","ARC","AGC","AHC"]
used=[True for i in range(4) ]
for i in range(3):
    str=input()
    for j in range(4):
        if(str==cand[j]):
            used[j]=False
for i in range(4):
    if(used[i]):
        print(cand[i])
0

1Answer

元のURLがあるとより親切かなと思います。
【ABC217】B - AtCoder Quiz

本題の解説ですが、if文やfor文など基本的な構文は理解している前提で、コードの書き方というよりかはアルゴリズムについて解説しますね。

まず、4つのコンテストの名称の文字列のリスト①と、同じ数だけのTrueを持ったリスト②を用意します。

# cand
["ABC","ARC","AGC","AHC"]
# used
[True, True, True, True]

そして、入力を受け取ったら、リスト①から入力と同じ文字列を持つインデックスを特定し、リスト②のそのインデックスの値をFalseに更新します。

# 入力が「ARC」
["ABC","ARC","AGC","AHC"]
#        ↓
[True, False, True, True]

3つの入力が終わるとリスト②に1つだけTrueのままの箇所があるので、リスト①の同じ位置の文字列を出力すれば解けます。

# 3つの入力「ARC」「AGC」「AHC」を受け取った後
[True, False, False, False]
#  ↓
["ABC","ARC","AGC","AHC"]
# 「ABC」を出力すればOK
1Like

Comments

  1. @ora_yoshito

    Questioner

    ありがとうございます

Your answer might help someone💌