https://www.hackerrank.com/challenges/30-nested-logic/problem
이번 문제는 Nested Logic입니다. 간단한 문제이지만 괜히 이상하게 푼 것 같습니다..
이 문제는 책을 반납받을 때 내야하는 연체료를 계산하는 문제였습니다.
연체료를 내는 조건은 다음과 같습니다.
i) 반납 예정 일자 이전(혹은 당일)에 반납할 경우 0원
ii) 반납 예정 일자 이후에 반납할 경우 :
1) 같은 해, 같은 월에 반납할 경우 (연체된 일수 * 15)원
2) 같은 해 다른 월에 반납할 경우 (연체된 월수 * 500)원
3) 다른 해에 반납할 경우 10000원
변수 :
1) return_date_input : 입력 받은 반납 날짜 (Input Format은 'day month year'입니다.)
2) expected_date_input : 입력 받은 반납 예정 날짜
3) date_list : input들을 저장하는 list, string 을 가공하여 datetime 객체로 만든다.
4) return_date : datetime Format로 변경된 반납 날짜
5) expected_date : datetime Class로 변경된 반납 예정 날짜
방법 :
1) input을 datetime형식으로 변경하여 저장한다. (저는 연체 날짜가 1달을 넘어갈 경우 (연체된 달 * 500)이 아니라 (연체된 날짜 * 500)으로 이해해서 datetime형식으로 변환했습니다. 30일/31일/28일/29일 등 달마다 일의 개수는 다르니까요. 하지만 문제를 잘못 읽었었습니다.)
2) return_date의 연/월/일, expected_date의 연/월/일 비교를 통하여 연체료를 계산한다.
이 때 주의해야 할 점은,
1) Input format에서 연도는 항상 4자리가 아니다.(Datetime 객체로 변환할 시 문제가 됩니다.)
2) 반납 날짜와 반납 예정 날짜의 연도 / 월이 다르지만 연체료를 내지 않는 경우도 있습니다.(1년 혹은 1달 이상 빨리 반납했을 경우)
이상 끝-!
'Computer Science > 알고리즘' 카테고리의 다른 글
Hackerrank - New Year Chaos (0) | 2020.03.16 |
---|---|
HackerRank - Statistics 1 (0) | 2020.03.10 |
Hackerrank - Running Time and Complexity (0) | 2020.02.23 |
Hackerrank - More Linked Lists (0) | 2020.02.20 |
Hackerrank - BST Level-Order Traversal (0) | 2020.02.19 |