このページについて
このページは、paiza ラーニング内に開設されているコンテンツ「レベルアップ問題集」で取り扱われているプログラミング課題について、独自の見解を述べたものです。
見解については、paizaラーニングの規約に基づき、許可されている範囲でのみ公開していますが、その内容については paiza とは一切関係なく、また paiza の立場を反映したものではありませんのでご注意ください。
挑戦する課題
レベルアップ問題集のデータセット選択メニューから「重複の削除 (paizaランク C 相当)」を取り上げます。
以下は、問題公開 Web ページからの引用です。
問題
N 個の要素からなる数列 A が与えられます。数列 A は昇順にソートされています。 A の重複した要素を取り除いて昇順に出力してください。入力される値
1 2 |
N A1 A2 ... A_N |
- 入力値最終行の末尾に改行が1つ入ります。
- 文字列は標準入力から渡されます。
期待する出力
A の重複した要素を取り除いて昇順に出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。
1 |
A1 A2 ... A_N |
考え方
執筆中。
Set を使う。ただし、Set は順番が保証されていないので、出力時にソートする。
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// 最初の行は読み飛ばす _ = readLine() // Int 型の Set (集合)を作る var set: Set<Int> = [] // 1. 1行読み込み // 2. Int 型に変換し // 3. set に追加する readLine()!.split(separator: " ") .map { Int($0)! } .forEach { set.insert($0) } // 集合は順番が保証されていないので // 1. ソートし // 2. 出力しやすいように String に変換し // 3. 文字列間に空白を入れて連結する let sorted = set.sorted() .map { String($0) } .joined(separator: " ") // 結果出力 print(sorted) |