ABC217参戦記

プログラミング

ABC217の参加記録です。
仕様言語はPython3です。
レートは茶色中位です。
私が理解した内容で記載するため、間違いを含む可能性があります。(間違っていたら教えてください。)

A – Lexicographic Order

標準入出力と条件分岐の問題。

Python3では、辞書順比較するのに比較演算子( > や < , == )を利用できるため、S < T であれば”Yes”を出力するコードを書けばOKですね。

# AtCoder Beginner Contest 217
# A - Lexicographic Order

S,T=map(str,input().split())

print("Yes") if S<T else print("No")

B – AtCoder Quiz

繰り返し処理が利用できるかを問われる問題。
私は、問題の特性から、4種類のうち、必ず1種類が残ることを利用して、set を利用しました。
3回の入力でそれぞれ入力されたものをdiscard() していき、残ったものを答えればOKです。

# AtCoder Beginner Contest 217
# B - AtCoder Quiz

s=set(["ABC" , "ARC" , "AGC" , "AHC"])
for i in range (3):
    s.discard(input())
print(*s)

print() の引数の前の*は複数要素が入っているデータ(listやsetなど)を空白区切りで出力してくれます。
今回はsetに入っているのが1つだけであることが保証されています。

C – Inverse of Permutation

配列の操作が出来るかを問われる問題。

はじめ、問題文を見たときに、ぎょっとしましたが、丁寧に問題文に書いてあることをコードに落とせればACするタイプの問題でしたね。
その、問題文に書いてあることを理解するのに時間がかかるタイプでしたけれども。

答え用の配列を準備して、順列P を順番に処理していけばOKです。

気を付けることとして、Pの要素は1-indexで書いていますが、答え用の配列に格納する際には、0-indexになり、答えを出力する際には1-indexに戻して出力する必要がある点でしょうか。

# AtCoder Beginner Contest 217
# C - Inverse of Permutation

N=int(input())
p=list(map(int,input().split()))

q=[0]*N
for i in range (N):
    q[p[i]-1]=i
    
for i in range (N):
    print(q[i]+1)

コメント

タイトルとURLをコピーしました