このページについて
このページは、paiza ラーニング内に開設されているコンテンツ「レベルアップ問題集」で取り扱われているプログラミング課題について、独自の見解を述べたものです。
見解については、paizaラーニングの規約に基づき、許可されている範囲でのみ公開していますが、その内容については paiza とは一切関係なく、また paiza の立場を反映したものではありませんのでご注意ください。
挑戦する課題
レベルアップ問題集のCランクレベルアップメニューから「数字の文字列操作(時刻2) (paizaランク D 相当)」を取り上げます。
以下は、問題公開 Web ページからの引用です。
問題
時刻を表す長さ 5 の文字列 S が “XX:XX” の形式で与えられます。与えられた時刻の 30 分後の時刻を同じ形式で出力してください。
入力される値
入力は以下のフォーマットで与えられます。
1 |
S |
- 1 行目に文字列 S が与えられます。
- S は “XX:XX” という形をしており、 ":" の左側は時を、右側は分を表します。時や分が一桁である場合、十の位は 0 で埋められます。また、 00:00 から 23:59 までの 24 時間表記を採用しています。
期待する出力
与えられた時刻の 30 分後の時刻を
"XX:XX" の形式で出力してください。
末尾に改行を入れ、余計な文字、空行を含んではいけません。
条件
すべてのテストケースにおいて、以下の条件をみたします。
- S が表す時刻は最も遅くて 23:29
考え方
執筆中
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// 1行読み込み、コロン(:)で分割し、Int に変換する let ia = readLine()!.split(separator: ":").map { Int($0)! } // 時間を30分進める var h = ia[0] var m = ia[1] + 30 // 60分以上であれば、1時間進める if m > 59 { m -= 60 h += 1 } // h, m が1桁の場合は先頭にゼロを入れる。 print(( h < 10 ? "0" : "" ) + "\(h):" + ( m < 10 ? "0" : "" ) + "\(m)") |