このページについて
このページは、paiza ラーニング内に開設されているコンテンツ「レベルアップ問題集」で取り扱われているプログラミング課題について、独自の見解を述べたものです。
見解については、paizaラーニングの規約に基づき、許可されている範囲でのみ公開していますが、その内容については paiza とは一切関係なく、また paiza の立場を反映したものではありませんのでご注意ください。
挑戦する課題
レベルアップ問題集のCランクレベルアップメニューから「フラグ管理 (paizaランク D 相当)」を取り上げます。
以下は、問題公開 Web ページからの引用です。
問題
正整数 n と n 個の整数 a_1, …, a_n が改行区切りで与えられるので、各 a_i (1 ≤ i ≤ n) が 7 であるか判定し、 a_1, …, a_n の中に 7 がひとつでも含まれていた場合には “YES” を、そうでない場合(7 がひとつも含まれていなかった場合)には “NO” を出力してください。
入力される値
入力は以下のフォーマットで与えられます。
1 2 3 4 |
n a_1 ... a_n |
- 1 行目には正整数 n が与えられ、 2 行目から (n + 1) 行目には n 個の整数 a_1, ..., a_n が改行区切りで与えられます。
期待する出力
a_1, ..., a_n の中に 7 がひとつでも含まれていた場合には "YES" を、そうでない場合には "NO" を出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。
考え方
執筆中。
解答例
1 2 3 4 |
// 1行目は読み飛ばす _ = readLine()! // 行末まで読み込み、Int に変換し、その数値が 7 の物だけフィルタリングする。 print(Array(AnyIterator { readLine() }).map { Int($0)! }.filter { $0 == 7 }.count == 0 ? "NO" : "YES") |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// 1行目は読み飛ばす _ = readLine()! // 行末まで読み込み、Int に変換する let ia = Array(AnyIterator { readLine() }).map { Int($0)! } // 配列を逐次スキャンし、7 だった場合はフラグを立てて即時終了する var hasSeven = false for i in ia { if i == 7 { hasSeven = true break } } print(hasSeven ? "YES" : "NO") |