質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

397閲覧

Atcoder、Pythonにコードの間違い指摘への助言

sakura.k

総合スコア50

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/07/28 07:29

前提

Atcoder 東京海上日動プログラミングコンテスト2022(AtCoder Beginner Contest 256)にて、コードを書いたのですが、期待する出力がなされませんでした。コードを見ていただき、問題点を教えていただきたいです。

実現したいこと

以下の問題において、期待する出力を出すようなコードを書くこと。
https://atcoder.jp/contests/abc256/tasks/abc256_b

発生している問題・エラーメッセージ

入力に対する出力が異なる。

該当のソースコード

n=int(input()) a = list(map(int,input().split())) #コマが置いてある場所 piece_position=[] #pの値 p=0 #Aiについて、処理する for j in a: #最初に必ずマス 0 に駒を置く。 piece_position.append(0) #配列piece_positionの要素全てについて、Aiを足す #添字をカウントする変数 count=0 for i in piece_position: i+=j #もし移動先のマスが存在しない駒であれば、それらを取り除いて P に取り除いた個数を加算する if i>3: p+=1 piece_position.pop(count) count+=1 print(p)

試したこと

実際にコードを書きました。

補足情報(FW/ツールのバージョンなど)

なし

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

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

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

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

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

y_waiwai

2022/07/28 07:36

提示のコードではどういう出力がなされるんでしょうか
sakura.k

2022/07/28 07:57

例えば、 4 1 1 3 2 に対しては、 0 と出力され、 10 2 2 4 1 1 1 4 2 2 1 に対しては、 5 と出力されます。
guest

回答1

0

ベストアンサー

for文中でリストの要素を増減させようとするとインデックスがずれるのでけっこう大変です。
例えば

python

1xs=[0,1,2,3,4] 2 3for i in range(len(xs)): 4 if i == 1 or i ==3: 5 xs.pop(i) 6 7print(xs) # [0, 2, 3]

というわけでそのあたりを考慮する必要があります。
公式解説 のように「マス0~3にコマが置いてあるかどうか」を管理しましょう。


別解は、Aiの逆順の累積和をとって、3を超える要素がいくつあるかを調べればいいです。
例えば入力例1:

4 1 1 3 2

だと、
最初に置いたコマは 1+1+3+2マス動きますし
2番目は 1+3+2 マス動きますし
3番めは 3+2マス
4番目は 2マス 動きます

投稿2022/07/28 07:48

編集2022/07/28 07:59
ozwk

総合スコア13521

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

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

sakura.k

2022/07/28 08:21

なるほど。インデックスがずれるせいなのですね。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問