1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 日付セット(言語選択)
  4. 問題一覧 Swift編
  5. カレンダーの表示 Swift編

日付セットのアイコン
カレンダーの表示 Swift編(paizaランク B 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

西暦y年のm月のカレンダーを表示してください。

カレンダーは、日曜日を週の始まりとした曜日を表す7つの列と6行からなる表です。

カレンダーのi行j列目には、以下のいずれかの文字列が詰められています。
・2桁の数字
・半角スペース1文字と1桁の数字
・数値を表示しない場合は、2つの半角スペース

また、列の間は1つの半角スペースで区切られます。

ただし、各月の日数は以下のように決まることに注意してください。
・4, 6, 9, 11月は30日
・2月は閏年ならば29日、そうでなければ28日
・それ以外の月は31日

ただし、閏年は次のような年のことをいいます。
・西暦が4で割り切れる年は閏年
・ただし、100で割り切れる年は平年
・ただし、400で割り切れる年は閏年

ただし、1800年1月1日は水曜日です。(現実のカレンダーです)

入力される値

以下の形式で、数値yとmが与えられます。

y m


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

6行でカレンダーを表示してください。
各行はちょうど20文字からなります。

例えば2019年4月のカレンダーはこのようになります。

    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 26 27
28 29 30


※入出力例では半角スペースの表示が乱れているので注意してください。

条件

すべてのテストケースにおいて、以下の条件を満たします。

・1800≦y≦3000
・1≦m≦12

入力例1

2019 4

出力例1

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 26 27
28 29 30

入力例2

1800 1

出力例2

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
26 27 28 29 30 31

入力例3

1800 2

出力例3

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 26 27 28

入力例4

3000 12

出力例4

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 26 27
28 29 30 31

問題一覧へ戻る

ページの先頭へ戻る