반응형

 

https://www.hackerrank.com/challenges/30-nested-logic/problem

 

Day 26: Nested Logic | HackerRank

Test your understanding of layered logic by calculating a library fine!

www.hackerrank.com

이번 문제는 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

+ Recent posts