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

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

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

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

Q&A

解決済

2回答

339閲覧

情報オリンピック 問D python3 なぜ不正解か教えてほしいです

jacknash

総合スコア15

Python 3.x

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

0グッド

0クリップ

投稿2018/12/09 07:54

自分では正しいつもりで、サンプルを入力しても正しくなったのですが、コードを提出すると、半分位間違った値になりました。
情報オリンピックはもう終了しています。
コードチェックお願いします。

問題

日本列島は細長い列島である.日本列島は平行な境界線により N 個の区画に分けられている.区画には端から順に 1 から N の番号が付けられている.区画 i (1≦i≦N) の高さは Ai である.

日本列島は海に囲まれており,海面の高さは場所によらず一定である.高さが海面の高さより高い区画を陸地と呼ぶ.

陸地が連続している部分のことを島と呼ぶ.より正確に書くと以下の通りである.整数 l, r (1≦l≦r≦N) について,日本列島のうち区画 l,区画 l+1,…,区画 r からなる部分を領域 [l,r] という.以下の条件を満たす領域 [l,r] を島という:

区画 l,区画 l+1,…,区画 r はすべて陸地である.
l>1 ならば区画 l−1 は陸地ではない.
r<N ならば区画 r+1 は陸地ではない.
海面の上昇により,日本列島は少しずつ沈没している.現在の海面の高さは 0 であるが,これは時間が経つにつれて徐々に上がり,ついには日本全体が海になってしまう.

JOI 君は,海面の高さが上昇すると,日本の島の数が増減することに気付いた.現在から,日本に陸地がなくなるまでの間 (現在も含む) における,島の数の最大値を求めたい.

該当のソースコード

Python3

1def zero(x): 2 if x - i > 0: 3 return str(x-i) 4 else: 5 return str(0) 6 7ans = 0 8times = int(input()) 9high = list(map(int,input().split(" "))) 10for i in range(max(high)): 11 num_em = "".join(list(map(zero,high))).split('0') 12 num = list(filter(lambda str:str != "",num_em)) 13 14 if len(num) > ans: 15 ans = len(num) 16 17print(ans) 18

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

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

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

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

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

can110

2018/12/09 08:21

Aiのとりうる高さの範囲を追記ください。0~10^5 など
guest

回答2

0

コードについてはすでに指摘されているとおりと思います。
文字として扱っているので、桁数が増えると、領域の判定がおかしくなります。
ほかのデータ例としては、12 34が2つと、123 456 789が3つと誤判定されます。
初期値にゼロが含まれなくても日本沈没中にゼロが現れるとダメです。

投稿2018/12/09 08:27

編集2018/12/09 08:30
can110

総合スコア38266

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

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

0

ベストアンサー

陸地の高さをすべて join() した後に "0" で分割している為、高さが "0" を含む 2 桁以上の数値だった場合に分割されてしまうからではないでしょうか。

例えば、 [10, 10, 10] という 1 つの島としてみなされるべき状態は、 0 によって分割され、 3 つの島として扱われてしまいます。

投稿2018/12/09 08:15

argparse

総合スコア1017

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

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

jacknash

2018/12/09 09:17

分かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問