본문 바로가기

PS/프로그래머스

[프로그래머스 LV 2] 개인 정보 수집 유효기간 (파이썬 / python)

728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

연 / 월/ 일/ 시 분 / 초 

를 계산하는 문제에서는 서로의 대소를 비교할때
문제에서 주어진 최저의 단위를 사용하는것이 좋습니다.

 

이 문제에서는 일(day)를 최저의 단위로 보고있기 때문에

모든 날짜에 관한 단위를 일에 맞춰 문제를 풀면

각 날짜의 대소비교를 할때 수월하게 이용할 수 있습니다.

 

def solution(today, terms, privacies):
    answer = []
    term_dic = {}
    today_year, today_month, today_day = today.split(".")

    total_now_day = get_total_day(today_year, today_month, today_day)

    for t in terms:
        term_type, month = t.split(" ")
        term_dic[term_type] = int(month) * 28

    for i, p in enumerate(privacies):
        year, month, day = p.split(" ")[0].split(".")
        total_p_day = get_total_day(year, month, day)
        term_type = p.split(" ")[1]

        if total_p_day + term_dic[term_type] <= total_now_day:
            answer.append(i + 1)

    return answer


def get_total_day(year, month, day):
    return int(year) * 12 * 28 + int(month) * 28 + int(day)
728x90