[문제]

https://school.programmers.co.kr/learn/courses/30/lessons/150370

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[풀이]

1. 날짜 비교를 datetime 모듈로 진행하였다.

2. 월이 28일까지라서 보정작업을 해줘야 한다.

3. 월이 28일이면서 달이 12월이면 연도도 보정작업을 해줘야 한다.

from datetime import datetime

def solution(today, terms, privacies):
    answer = []
    date_today = datetime.strptime(today, '%Y.%m.%d')

    dic = {s[0]: s[2:] for s in terms}

    for i, s in enumerate(privacies):
        d, t = s.split(' ')
        add_month = int(dic[t])
        year, month, day = map(int, d.split('.'))

        year = year + (month + add_month - 1) // 12
        month = (month + add_month - 1) % 12 + 1
        day = (day - 1 + 27) % 28 + 1
        if day == 28:
            month = (month - 1 + 11) % 12 + 1
            if month == 12:
                year -= 1

        date_new = datetime(year, month, day)

        if date_new < date_today:
            answer.append(i + 1)

    return answer

 

날짜 비교를 그냥 총 일수를 구해서 해버리는게 더 가독성 좋고 효율적이고 편하다

'코드카타 > Python' 카테고리의 다른 글

달리기 경주  (1) 2024.12.30
[PCCP 기출문제] 2번 / 석유 시추  (2) 2024.12.28
바탕화면  (0) 2024.12.23
성격 유형 검사하기  (0) 2024.12.22
햄버거 만들기  (1) 2024.12.21

+ Recent posts