1 분 소요

사용 언어: Python3

문제

개인정보 수집 유효기간

풀이

나의 풀이

def solution(today, terms, privacies):
    today_yy, today_mm, today_dd = map(int, today.split('.'))
    terms_dic = {}
    for term in terms:
        a, b = term.split()
        terms_dic[a] = int(b)
        
    res = []
    for idx, privacy in enumerate(privacies):
        collect_start, rule = privacy.split()
        start_yy, start_mm, start_dd = map(int, collect_start.split('.'))
        start_mm += terms_dic[rule] # 수집일자 + 약관 유효기간
        
        if start_mm > 12:
            start_yy += start_mm // 12
            start_mm %= 12
            
        start_dd -= 1 # 하루 빼야함
        if start_dd == 0:
            start_dd = 28
            start_mm -= 1
            if start_mm == 0:
                start_mm = 12
                start_yy -= 1
        
        # today와 날짜 비교 -> 파기해야할 것 res에 담기
        # today가 start 보다 크면 파기
        if today_yy > start_yy:
            res.append(idx+1)
        elif today_yy < start_yy:
            pass
        else: # 년이 같으면 달 비교
            if today_mm > start_mm:
                res.append(idx+1)
            elif today_mm < start_mm:
                pass
            else: # 월도 같으면 일 비교
                if today_dd > start_dd:
                    res.append(idx+1)
                elif today_dd < start_dd:
                    pass
                else: # 일까지 같으면 아직 보관 가능
                    pass
    
    return res
  • 테스트 케이스: 통과
  • 제출 결과: 실패
    스크린샷 2023-06-15 오후 5 42 08

다른 풀이

def solution(today, terms, privacies):
    def dateToDay(date):
        yy, mm, dd = map(int, date.split("."))
        return (yy * 12 * 28) + (mm * 28) + dd
    
    terms_dic = {}
    for term in terms:
        a, b = term.split()
        terms_dic[a] = int(b)
        
    today_date = dateToDay(today) # 오늘 날짜
        
    res = [] # 파기할 개인정보
    for idx, privacy in enumerate(privacies):
        collect_start, rule = privacy.split() # 개인정보 수집일자, 약관 종류
        
        start_date = dateToDay(collect_start) # 수집일자
        start_date += terms_dic[rule] * 28 - 1 # 보관 가능 날짜 (= 수집일자 + 약관 유효기간 - 1)
        
        # today와 날짜 비교 -> 파기해야할 것 res에 담기
        # today가 start 보다 크면 파기
        if today_date > start_date:
            res.append(idx + 1)
    
    return res
  • 테스트 케이스: 통과
  • 제출 결과: 통과
  • 년, 월, 일 -> 로 변환 🌟
    • 날짜를 정확하고 간단하게 비교할 수 있다!


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기