👨‍🏫ps/❄️프로그래머스

[프로그래머스] 개인정보 수집 유효기간 [Python]

peacekim 2023. 3. 12. 22:14
반응형

문제

간단한 구현문제이다.

python으로 class를 처음 써봐서 버벅거려서 시간이 좀 걸렸다,,,

 

시간복잡도는 O(n)이다

 

👨‍💻코드

def solution(today, terms, privacies):
    answer = []
    tYear, tMon, tDay = today.split(".")
    tod = Date(tYear, tMon, tDay)
    dates = []
    t = {}
    for term in terms:
        a, m = term.split(" ")
        t[a] = int(m)
        
    for privacy in privacies: 
        date, a = privacy.split(" ")
        aYear, aMon, aDay = date.split(".")
        dates.append(Date(aYear, aMon, aDay).plus(t[a]))
    
    for idx, date in enumerate(dates):
        if date.isLaterDate(tod) == False :
            answer.append(idx + 1)
    return answer

class Date: 
    def __init__(self, year, mon, day):
        self.year = int(year)
        self.mon = int(mon)
        self.day = int(day)
    
    def plus(self, mon):
        self.mon += mon
        while self.mon > 12:
            self.year += 1
            self.mon -= 12
        return self
            
    def isLaterDate(self, date):
        if self.year == date.year:
            if self.mon == date.mon:
                if self.day == date.day:
                    return False
                elif self.day < date.day:
                    return False
                else:
                    return True
            elif self.mon < date.mon:
                return False
            else:
                return True
        elif self.year < date.year:
            return False
        else: 
            return True
반응형