https://school.programmers.co.kr/learn/courses/30/lessons/150370
풀이 - 나의 생각
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
'프로그래머스 > Lv.1' 카테고리의 다른 글
[PCCP 기출문제] 1번 / 동영상 재생기 - Pyton, f_string (0) | 2024.11.25 |
---|---|
달리기 경주 - Python, 딕셔너리 (0) | 2024.11.25 |
2019 KAKAO BLIND RECRUITMENT > 실패율 -Python, 딕셔너리 정렬 (0) | 2024.11.16 |
Summer/Winter Coding(~2018) > 예산 - Python, 바다코끼리 연산자(Walrus Operator) (2) | 2024.11.16 |
2022 KAKAO BLIND RECRUITMENT > 신고 결과 받기 - Python, defaultdict, set, defaultdict 없이 초기화하기 (1) | 2024.11.16 |