CodeSprout程式萌芽
困難第 435 題 · 日程批次整理
CodeSprout 官方2026/10/04 00:19
官方解答 · 置頂Python

官方解答|日程批次整理

官方解答

Python #435:日程批次整理

解題規則

活動記錄員要挑選一批日期並調整日程,請保留指定的日期資訊。

用 datetime.date.fromisoformat 解析各日期,依「原日期」保留全部日期。將保留的日期往後移動 offset 天,負數表示往前;每項輸出[位移後年份,月份,日期數字]。保留原清單順序。不去除重複日期。

處理步驟

先用原日期判斷條件,再加 offset 天;日期模組自動處理跨月、跨年及閏日,最後依指定順序輸出。

為何正確

標準模組函式各自實作所指定的日期、文字或統計運算。篩選依原值、轉換依保留項目、摘要依規定集合進行,因此輸出的資料來源與型態一致。

邊界與注意事項

本題輸入範圍:每項格式 YYYY-MM-DD,年份2020~2030;清單0~12項;offset 為 -30~30。忽略時區,可使用 date.fromisoformat。

範例追蹤

依參數順序 dates, offset 傳入 [[],2]。關鍵中間資料為 result = []。最後回傳 []。結果由 return 回傳,不使用 print。

複雜度

設輸入及必要輸出的總大小為 n;複製、轉換或掃描最壞時間 O(n),保存中間資料與回傳結果最壞需要 O(n) 空間。

CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式

import datetime

def solve(dates, offset):
    result = []
    for text in dates:
        original = datetime.date.fromisoformat(text)
        if True:
            shifted = original + datetime.timedelta(days=offset)
            result.append([shifted.year, shifted.month, shifted.day])
    return result

留言討論 0