AtCoder ABC 218 B – qwerty Python解説

スポンサーリンク

qwerty

1 以上 26 以下の整数からなる長さ 26 の数列 P=(P1,P2,…,P26) が与えられます。
ここで、P の要素は相異なることが保証されます。

以下の条件を満たす長さ 26 の文字列 S を出力してください。
任意の i(1≤i≤26) について、S の i 文字目は辞書順で小さい方から Pi番目の英小文字である。

AtCoder Beginner Contest「qwerty」

辞書順で i 番目の英小文字を出力していく問題です。26個の数列Pと対応するアルファベットをひとつずつ繋げて、最後に出力すれば大丈夫です。

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

a = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
    "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

ans = ""

for i in range(26):
    ans += a[p[i] - 1]
    
print(ans)
    

上記のコードでは"a"から"z"までのアルファベットを書きましたが、アスキーコードを使うと、もっと簡単に実装することができます。

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

ans = ""

for i in range(26):
    ans += chr(p[i] + 96)
    
print(ans)

Pythonではchr関数を使うことで、アスキーコードの文字列に変換することができます。"a"はアスキーコードの97から始まるので、あとは数列Pの数値を足していけば、アルファベットを出力することができます。