このページについて
このページは、paiza ラーニング内に開設されているコンテンツ「レベルアップ問題集」で取り扱われているプログラミング課題について、独自の見解を述べたものです。
見解については、paizaラーニングの規約に基づき、許可されている範囲でのみ公開していますが、その内容については paiza とは一切関係なく、また paiza の立場を反映したものではありませんのでご注意ください。
挑戦する課題
レベルアップ問題集の文字列処理メニューから「巨大な数の足し算(繰り上がりなし) (paizaランク C 相当)」を取り上げます。
以下は、問題公開 Web ページからの引用です。
問題
数値を表す文字列 S , T が与えられるので、S + T の結果を表す文字列を出力してください。
なお、 S + T では、 足し算をしたときに全ての桁において繰り上がりが発生しないことが保証されているものとします。
入力される値
1 2 |
S T |
- 1 行目に文字列 S , 2 行目に文字列 T が与えられます。
期待する出力
S + T の結果を表す文字列を出力してください。条件
- S の各文字は、アルファベットの大文字または小文字
- 1 ≦ | S| , | T| ≦ 1000 ( | S| , | T| は、 それぞれ S , T の文字数です。)
- | S| = | T|
考え方
執筆中
繰り上がりがないので、各桁を一つずつ加算するだけ。
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// 一連の入力を読み込む let sa = Array(AnyIterator { readLine() }).map{ String($0) } // 問題の条件に対応させる(ついでに、数値1桁に分解) let s = sa[0].map { Int(String($0))! } let t = sa[1].map { Int(String($0))! } // 合計 var sum = "" // 各桁を足しながら、文字列に追加する for i in 0..<s.count { sum.append(String(s[i] + t[i])) } // 結果の出力 print(sum) |