このページについて
このページは、paiza ラーニング内に開設されているコンテンツ「レベルアップ問題集」で取り扱われているプログラミング課題について、独自の見解を述べたものです。
見解については、paizaラーニングの規約に基づき、許可されている範囲でのみ公開していますが、その内容については paiza とは一切関係なく、また paiza の立場を反映したものではありませんのでご注意ください。
挑戦する課題
レベルアップ問題集のその他セットから「数の並び替え (paizaランク D 相当)」を取り上げます。
以下は、問題公開 Web ページからの引用です。
問題
1行目で正の整数nが入力され、続くn行の各行で整数が1つずつ入力されます。n個の整数を小さい順に改行区切りで出力してください。
入力される値
入力は以下のフォーマットで与えられます。
1 2 3 4 5 6 7 8 |
n (数字の総数) a_1 a_2 a_3 ... a_i ... a_n |
期待する出力
入力された正の整数a_iを小さい順に改行区切りで出力してください。
考え方
正の整数 a_i については、 AnyIterator を使えば読み込み回数を管理する必要はないため、最初の入力値については無視する(読み飛ばす)。
それ以降は、入力された文字列を Int 型に変換したあと、 sorted() を使い配列を直接並び替え、 forEach を使って順番に出力する。
解答例
1 2 3 4 |
// 読み飛ばし let _ = readLine()! // 2行目以降、末尾までの入力を配列に入れ、Int 型にし、昇順に整列し、順番に出力する Array(AnyIterator { readLine() }).map { Int($0)! }.sorted().forEach { print($0) } |