くろたんく雑記帳

日常とか、わんちゃんとか、機械学習とか、競プロとか、

MENU

Python3で解く AtCoder Beginner Contest 142 C - Go to School

インデックスをいい感じにずらして考えられるかの問題
こういう問題を逆順列を求める問題というらしい


概要

問題

  1. 出席番号{\displaystyle i}の人が来たときの自分を含めている人数{\displaystyle A_i}を与えられる。
  2. どういう順番で来たのかを出席番号で答えらえる?

解くときに考えた内容

  • こういう問題は頭が混乱する。
  • 例で考える
    {\displaystyle A}が2 3 1のとき
    • 1つ目(出席番号1番)が出席順が2番目でした
    • 2つ目(出席番号2番)が出席順が3番目でした
    • 3つ目(出席番号3番)が出席順が1番目でした

出力は出席順なので、

  • {\displaystyle A}の値が出力リストのindexである
    (-1してあげないといけない)
  • 出力リストの該当indexには出席番号を入れる。
    (実装上enumerateのindexなので+1してあげないといけない)
  • リストを改行なしで出すにはアンパック(*)してあげればいい。
    以下の「リストの結果を1行に半角スペース開けて出力」に書いてある。 blacktanktop.hatenablog.com

コード

def main():
    n = int(input())
    A = [int(x) for x in input().split()]
    ans = [None] * n
    for idx, a in enumerate(A):
        ans[a-1] = idx+1
    print(*ans)

if __name__ == '__main__':
    main()