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

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

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

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

Q&A

解決済

1回答

1725閲覧

AtCoder Beginner Contest 122 B問題が解けない

Danrussia

総合スコア44

Python 3.x

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

1グッド

1クリップ

投稿2020/01/13 04:54

前提・実現したいこと

Python3 (3.4.3)でABC122のB問題を解いています。(https://atcoder.jp/contests/abc122/tasks/abc122_b)
以下のソースコードの様な形での実装を試みたのですが、上手くいきませんでした。

該当のソースコード

Python3

1S = input() 2ACGT = ["A","C","G","T"] 3 4ans = 0 5ans_lis = [0] 6 7for i in range(len(S)): 8 if S[i] in ACGT: 9 ans = ans + 1 10 elif S[i] not in ACGT: 11 ans_lis.append(ans) 12 ans = 0 13 14print(max(ans_lis))

結果

イメージ説明

試したこと

この問題を見た時に大まかに以下の方針を立てて実装しました。

<指定された文字列を一文字ずつ読み込む> → <読み込んだ文字がACGT 文字列に該当する場合は変数ansに+1する>
→ <読み込んだ文字がACGT 文字列に該当しない場合は、現時点での変数ansの値をリストに代入した後に、ansを初期化する>
<max()でリスト内に入ってる最大の数字を出力し、最も長い ACGT 文字列 の長さを求める>

しかし、結果を見ると何問か<WA>があり、自分のコードではどのようなパターンに対応できないか分かりません。
直接的な回答でなくても、実装漏れしている例などを教えて頂ければ幸いです。

DrqYuto👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

一番最後に最長のACGT文字列が現れるとき、ans_lisにその結果が保持されません。
ループ脱出後に、余分なようでも ans_lis.append(ans) とすれば解消すると思います。

その他、気になること

いわゆるfor-eachを活用する
for i in range(len(S)): より for ch in S: の方が良いでしょう。
本問では各文字のインデックスを意識する必要は無い筈です。

else節を活用する
条件の真偽で処理を分けたいだけなら、if-elseを使うのが自然です。

Python

1if ch in ACGT: 2 ... 3else: 4 ...

文字列の包含判定
実は ch in ["A","C","G","T"] ではなく ch in "ACGT" で充分です。

投稿2020/01/13 05:06

編集2020/01/13 05:12
LouiS0616

総合スコア35660

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

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

Danrussia

2020/01/13 05:37

回答ありがとうございます。以下の用に訂正して、AC取れました。ありがとうございます S = input() ans = 0 ans_lis = [0] for i in range(len(S)): if S[i] in "ACGT": ans = ans + 1 else: ans_lis.append(ans) ans = 0 ans_lis.append(ans) print(max(ans_lis))
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問