このページについて
このページは、paiza ラーニング内に開設されているコンテンツ「レベルアップ問題集」で取り扱われているプログラミング課題について、独自の見解を述べたものです。
見解については、paizaラーニングの規約に基づき、許可されている範囲でのみ公開していますが、その内容については paiza とは一切関係なく、また paiza の立場を反映したものではありませんのでご注意ください。
挑戦する課題
レベルアップ問題集の配列活用メニューから「配列のサイズの変更 (paizaランク D 相当)」を取り上げます。
以下は、問題公開 Web ページからの引用です。
問題
配列 A の要素数 N と新たに作成する配列のサイズ n , 配列 A の各要素 A_1 … A_N が与えられるので、配列 A の先頭から n 要素を順に保持する配列を作成してください。新たに作成する配列の要素数が A の要素数よりも大きい時は、サイズが合うように 0 を A の要素の末尾に追加してください。
入力される値
1 2 3 4 |
N n A_1 ... A_N |
- 1 行目では、配列 A の要素数 N と新たに作成する配列の要素数 n が半角スペース区切りで与えられます。
- 続く N 行では、配列 A の要素が先頭から順に与えられます。
期待する出力
1 2 3 |
B_1 ... B_n |
- 配列 A を元に新たに作成した配列 B の各要素を先頭から順に改行区切りで出力して下さい。
- また、出力の末尾には改行を入れてください。
考え方
執筆中
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// コピーする最大数 n を得る let i = readLine()!.split(separator: " ").map { Int($0)! } let n = i[1] // コピー元の配列を得る let ia = Array(AnyIterator { readLine() }).map { Int($0)! } // コピー先の配列を作る var na = [Int](repeating: 0, count: n) // コピーする数は、コピーする数とコピー元の配列のうち、小さいほうとなる // 要素番号で指定するので、-1 する let min = [n, ia.count].min()! - 1 // 範囲演算子を使ってコピーする na[0...min] = ia[0...min] // 各行を出力 na.forEach { print($0) } |