🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

915閲覧

Atcoder Grand Contest 038 B のサンプルの答えが合わない(Python3)

irplusred

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2019/09/21 16:53

##Atcoder Grand Contest 038 B のサンプルの答えが合わない

正確な問題文は
https://atcoder.jp/contests/agc038/tasks/agc038_b になります.

整数0~N-1からなる順列P = (P_0, P_1... P_{N-1})が与えられ
Pの連続するK個の要素を昇順にソートします.
この際にできる順列の場合の数を求めるという問題です.

このときに与えられている入力例3の答えが合いません.

入力 N, K = [10, 4] P = [2, 0, 1, 3, 7, 5, 4, 6, 8, 9] に対して答えは6になる.

該当のソースコード

Python3

1N,K = [10,4] 2P = [2, 0, 1, 3, 7, 5, 4, 6, 8, 9] 3for i in range(N - K + 1): 4 Q = [2, 0, 1, 3, 7, 5, 4, 6, 8, 9] 5 tmp = P[i:i+K] # Pの連続するKの要素を切り出してsort 6 tmp.sort() 7 for j in range(K): 8 Q[i+j] = tmp[j] #sortしたものをPに戻す 9 print(Q)

出力

[0, 1, 2, 3, 7, 5, 4, 6, 8, 9] [2, 0, 1, 3, 7, 5, 4, 6, 8, 9] [2, 0, 1, 3, 5, 7, 4, 6, 8, 9] [2, 0, 1, 3, 4, 5, 7, 6, 8, 9] [2, 0, 1, 3, 4, 5, 6, 7, 8, 9] [2, 0, 1, 3, 7, 4, 5, 6, 8, 9] [2, 0, 1, 3, 7, 5, 4, 6, 8, 9]

出力された順列はそれぞれ異なるので答えは7つになると思います.

補足

他の方のコードで試したみたところ答えは6なので私のコードが間違っています.
またAtcoderでは問題の解説がなされるのですが,そのpdfを見ても上のコードは何がまちがっている良くわかりません.
何卒ご回答のほどよろしくお願い申し上げます.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

結果が[2, 0, 1, 3, 7, 5, 4, 6, 8, 9]になるケースが2通りあるので片方をカウントしないようにしなければいけません。
演算結果が過去と同じものか判定するために演算結果を保持して一致確認をする必要があります。

Python

1N,K = [10,4] 2P = [2, 0, 1, 3, 7, 5, 4, 6, 8, 9] 3 4uniq_list = [] 5 6for i in range(N - K + 1): 7 tmp = P[:] 8 tmp[i:i+K] = sorted(P[i:i+K]) 9 print(i, tmp) 10 11 if tmp not in uniq_list: 12 uniq_list.append(tmp) 13 else: 14 print(i, "is rejected.") 15 16print(len(uniq_list))

投稿2019/09/21 21:41

nomuken

総合スコア1627

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

irplusred

2019/09/22 06:08

回答ありがとうございます. 重大な見落としをしておりました 大変助かりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問