白駿12437新カレンダー(小)(Python付き)
私が考えている解決策
問題の思考点
以下、図
入力:
3
、11
、4
.1ヶ月目は1週間も埋めきれずに残りました
最初の月が1週間未満と来月の早期開始日数が1であることを考慮すると、最初の月の計算時の週数は2+2となります.
来月は1を繰り上げて計算したので、10(
=11-1
)日の繰り上げ計算方法で計算します.(アルゴリズムの流れのみを説明します.詳細は手動で例を書いて理解してください.コードを参照してください!)
コード実装
import sys
T = int(input())
for tc in range(1, T+1):
# m: months,
# md: days of month
# wd: days of week
m, md, wd = map(int, sys.stdin.readline().split())
# 행을 채우고 남은 값: initial remain
ir = 0
result = 0
for i in range(m):
q, r = divmod((md-ir), wd)
# 달이 주(week)로 딱딱 나눠지는 경우
if r == 0:
result += q
ir = 0
else:
# 마지막 달을 계산할 때
if i == m-1:
result += (q+1)
# 마지막 달을 제외한...
else:
result += (q+2)
ir = wd - r
print(f'Case #{tc}: {result}')
Reference
この問題について(白駿12437新カレンダー(小)(Python付き)), 我々は、より多くの情報をここで見つけました https://velog.io/@daeungdaeung/백준-12437-새로운-달력smallwith-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol