1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【学習記録】フラグ管理 (paizaランク D 相当)

Posted at

目次

  • 問題文
  • 書いたコード
  • 解答例
  • 学んだこと
  • 振り返り

問題文

詳細はコチラ

###問題文の要約
一行目に以降の入力件数を、二行目以降に7があればTrue、なければFalseを表示せよ。

入力例2
3
4
11
35

出力例2
NO

書いたコード(その1)

main.py
count = int(input())

for (a, i) in enumerate(range(count)):
    b = input().split()
    if str(7) in b:
        print("YES")
        break
    else:
        if (a+1) == count:
            print("NO")

今までは一つ一つYES,NOを表示していくパターンが多かったので、どうやって一度だけprintを表示すればいいのか迷いました。酷いな…。
今まで使ったことなかったbreakを使えたのは収穫です(苦し紛れ…。)

書いたコード(その2)

main.py
count = int(input())
box = []
for i in range(count):
    box.append(input())
    
if str(7) in box:
    print("YES")
else:
    print("NO")

この記事を書いている間に思いつきました。単純に最後に評価すればいいじゃんと思ったのがこちら。
判定する値が一つだけじゃなくて複数になったらsetを使えばよさそう。
参考URL

解答例

main.py
n = int(input())

flag = False

for i in range(n):
    a = int(input())
    if a == 7:
        flag = True

if flag:
    print("YES")
else:
    print("NO")

最初の段階でFalseを入れておいて、見つかったらTrueを代入する。
この方法なら条件を7の倍数とかにしても簡単に対応できるので応用が効く。
タイトルがフラグ管理、となっているのにも納得です。

学んだこと

  1. フラグの管理

一言

無駄だらけのコードではあったけど、enumerateの使い方には慣れてきた実感。
一つの問題に複数コードが書けたのは多少なりとも引き出しが広がった感じがします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?