문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/150370
문제 풀이)
이 문제는 특별한 문제 풀이 방법이 있다기보다 반성하자는 의미에서 기록으로 남겨둔다.
문제에서 보면 굵은 글씨로 이렇게 적혀있다.
뭐 물론 굵긴 하지만 문제가 워낙 길어서 필요하다고 생각하는 내용들만 슥슥 보고 넘겼다가 괜히 달수를 더하려고 datetime 라이브러리를 가지고 머리를 싸메고 있었다.😐
전에도 카카오 기출을 풀면서 느낀건데 이런 문제가 종종 출제 되는것 같다. 단위를 낮춰서 통일시켜 계산하면 문제가 쉽게 해결되는 케이스
이 문제도 마찬가지 였다. 모든 달이 28일로 고정이므로 일수로 환산하는게 매우 간단해 진다.
만약 유효기간 시작 + 유효기간이 today보다 작다면 정답 배열에 추가해주기만 하면 끝이다.
문제를 제대로 읽는 습관을 들여야겠다!
def convert_date(d):
year, month , day = map(int, d.split('.'))
return ((year-2000) * 12 * 28) + (month * 28) + day
def solution(today, terms, privacies):
answer = []
today = convert_date(today)
term_dict = {}
for term in terms:
kind, period = term.split(' ')
term_dict[kind] = int(period) * 28
for i, privacy in enumerate(privacies):
data, kind = privacy.split(' ')
data = convert_date(data)
if data + term_dict[kind] <= today:
answer.append(i+1)
return answer
'Algorithm' 카테고리의 다른 글
[프로그래머스 - lv1] 최소직사각형 (0) | 2023.03.13 |
---|---|
[프로그래머스 - lv1] 문자열 나누기 (0) | 2023.03.08 |
[프로그래머스 - lv1] 기사단원의 무기 파이썬 (4) | 2023.03.06 |
[프로그래머스 - lv1, 2018 KAKAO BLIND RECRUITMENT] - [1차] 비밀지도 (0) | 2023.03.03 |
[프로그래머스 - lv1, 2020 카카오 인턴십] 키패드 누르기 (0) | 2023.02.27 |