본문 바로가기
프로그래머스/Lv.1

2023 KAKAO BLIND RECRUITMENT > 개인정보 수집 유효기간 - Python, 구현, map

by 아찌방 2024. 11. 22.

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

 

풀이 - 나의 생각

month에 대해 계산 후 year, day의 부가적인 계산을 하냐

 

year, month, day를 모두 day화 하여 계산을 하냐

 

편한 방식으로 진행하면 됩니다.

 

코드

 

def solution(today, terms, privacies):
    answer = []
    dict_terms = {term.split()[0]: int(term.split()[1]) for term in terms}
    today_int = int(today.replace(".", ""))  # YYYYMMDD 형태로 변환

    for idx, privacy in enumerate(privacies):
        date, term_type = privacy.split()
        year, month, day = map(int, date.split("."))
        
        # 유효기간 계산
        month += dict_terms[term_type]
        year += (month - 1) // 12
        month = (month - 1) % 12 + 1
        day -= 1
        if day == 0:
            day = 28
            month -= 1
            if month == 0:
                month = 12
                year -= 1

        # 유효기간을 YYYYMMDD 정수로 변환
        expiry_date = int(f"{year:04}{month:02}{day:02}")

        # 만료 여부 확인
        if expiry_date < today_int:
            answer.append(idx + 1)

    return answer

 

def forDay(today):
    year, month, day = map(int, today.split("."))
    return year*12*28 + month*28 + day
    
def solution(today, terms, privacies):
    dict_terms = {term[0]: int(term[2:]) * 28 for term in terms}  
    today = forDay(today)
    
    return [ i+1 for i, privacy in enumerate(privacies)
        if today >= forDay(privacy[:-2]) + dict_terms[privacy[-1]]
    ]

 

 

 

 

 

다음에 또 봐요

 

728x90