つまらないことを丁寧にやるだけ。

A. New Year and Days

問題

以下のいずれかの条件が与えられる。 2016年の日で、これを満たすものの日数を答えよ。

  • $x$曜日である。($1 \le x \le 7$)
  • 何らかの月の$x$日目である。($1 \le x \le 31$)

実装

datetimeを使ってみたもの

#!/usr/bin/env python3
import datetime
x, of, y = input().split()
x = int(x)
cnt = 0
d = datetime.date(2016, 1, 1)
while d.year < 2017:
    if y == 'week' and x == d.isoweekday():
        cnt += 1
    if y == 'month' and x == d.day:
        cnt += 1
    d += datetime.timedelta(1)
print(cnt)

本番提出したもの

#!/usr/bin/env python3
day_of_month = \
    [ 31
    , 29 # or 28
    , 31
    , 30
    , 31
    , 30
    , 31
    , 31
    , 30
    , 31
    , 30
    , 31
    ]
first_day = 5 # fri

x, of, y = input().split()
x = int(x)
if y == 'week':
    x = x % 7

z = 0
k = first_day
for i in range(12):
    for j in range(day_of_month[i]):
        if y == 'week':
            if k == x:
                z += 1
        elif y == 'month':
            if j+1 == x:
                z += 1
        k = (k + 1) % 7
print(z)