[BOJ/Python]15654号NとM(5)



この問題はitertoolsの配列を利用して本当に簡単に解くことができます.itertoolsの配列をリストとして保存し、昇順に並べ替え、所定のフォーマットで出力します.
  • n,mと入力します.
  • arrと入力します.
  • の結果は、sorted(list(itertools.permutations(arr, m)))の変数結果に格納される.
    (arrからmまでの組合せをソートリストとして保存)
  • 繰返し長が
  • の結果長のiの場合、for文に移行します.
    ->result[i]の長さはjのfor文を繰り返す.
    -->jがresult[i]の長さ-1に等しい場合、
    -->result[i][j]出力です.
    -->その他、
    -->result[i][j]で、改行ではなくスペースに分割されます.
  • Code

    import itertools
    n, m=map(int, input().split())
    arr=list(map(int, input().split()))
    result=sorted(list(itertools.permutations(arr, m)))
    for i in range(len(result)):
        for j in range(len(result[i])):
            if j==len(result[i])-1:
                print(result[i][j])
            else:
                print(result[i][j], end=' ')