In this post, we will solve **Library Fine HackerRank Solution**. This problem **(Library Fine)** is a part of **HackerRank Algorithms** series.

**Task**

Your local library needs your help! Given the expected and actual return dates for a library book, create a program that calculates the fine (if any). The fee structure is as follows:

- If the book is returned on or before the expected return date, no fine will be charged (i.e.:
**fine = 0**). - If the book is returned after the expected return
*day*but still within the same calendar month and year as the expected return date,.*fine*= 15 Hackos x (the number of days late) - If the book is returned after the expected return
*month*but still within the same calendar year as the expected return date, the.*fine*= 500 Hackos x (the number of months late) - If the book is returned after the calendar
*year*in which it was expected, there is a fixed fine of**10000 Hackos**.

Charges are based only on the least precise measure of lateness. For example, whether a book is due January 1, 2017 or December 31, 2017, if it is returned January 1, 2018, that is a year late and the fine would be **10,000 Hackos**.

**Example***d1*, *m1*, *y1* = 14, 7, 2018*d*2, *m2*, *y2* = 5, 7, 2018

The first values are the return date and the second are the due date. The years are the same and the months are the same. The book is **14 – 5 = 9** days late. Return **9 * 15 = 135**.

**Function Description**

Complete the *libraryFine* function in the editor below.

libraryFine has the following parameter(s):

*d1, m1, y1*: returned date day, month and year, each an integer*d2, m2, y2*: due date day, month and year, each an integer

**Returns**

*int:*the amount of the fine or**0**if there is none

**Input Format**

The first line contains **3** space-separated integers, *d1, m1, y1*, denoting the respective *day*, *month*, and *year* on which the book was returned.

The second line contains **3** space-separated integers, *d2, m2, y2*, denoting the respective *day*, *month*, and *year* on which the book was due to be returned.

**Constraints**

**1 <=***d*1,*d*2 <= 31**1 <=***m*1,*m*2 <= 12**1 <=***y*1,*y*2 <= 3000**It is guaranteed that the dates will be valid Gregorian calendar dates.**

**Sample Input**

```
9 6 2015
6 6 2015
```

**Sample Output**

`45`

**Explanation**

Given the following dates:

Returned: *d*1 = 9, *m*1 = 6, *y*1 = 2015

Due: *d*2 = 6, *m*2 = 6, *y*2 = 2015

Because** y2 = y1**, we know it is less than a year late.

Because

**, we know it’s less than a month late.**

*m*2 =*m*1Because

**, we know that it was returned late (but still within the same month and year).**

*d*2 <*d*1Per the library’s fee structure, we know that our fine will be **15 Hackos x (# days late)**. We then print the result of **15 x (d1 – d2) = 15 x (9 – 6) = 45** as our output.

**Solution – Library Fine – HackerRank Solution**

**C++**

#include<iostream> using namespace std; int main() { int actual[3],expected[3],i,j; for(i=0;i<3;i++) cin>>actual[i]; for(i=0;i<3;i++) cin>>expected[i]; if(actual[2]-expected[2]<0) cout<<0; else if(actual[2]-expected[2]>0) cout<<10000; else if(actual[1]-expected[1]<0) cout<<0; else if(actual[1]-expected[1]>0) cout<<500*(actual[1]-expected[1]); else if(actual[0]-expected[0]>0) cout<<15*(actual[0]-expected[0]); else cout<<0; }

**Python**

#!/bin/python3 import sys def libraryFine(d1, m1, y1, d2, m2, y2): fine = 0 if y1 > y2: fine = 10000 elif m1 > m2 and y1 == y2: fine = 500 * (m1 - m2) elif d1 > d2 and m1 == m2 and y1 == y2: fine = 15 * (d1 - d2) return fine if __name__ == "__main__": d1, m1, y1 = input().strip().split(' ') d1, m1, y1 = [int(d1), int(m1), int(y1)] d2, m2, y2 = input().strip().split(' ') d2, m2, y2 = [int(d2), int(m2), int(y2)] result = libraryFine(d1, m1, y1, d2, m2, y2) print(result)

**Java**

import java.util.Scanner; class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int d2 = sc.nextInt(), m2 = sc.nextInt(), y2 = sc.nextInt(); int d1 = sc.nextInt(), m1 = sc.nextInt(), y1 = sc.nextInt(); if (y2 > y1) { System.out.println(10000); } else if (y2 < y1 || m2 < m1 || m2 == m1 && d2 <= d1) { System.out.println(0); } else if (m1 == m2) { System.out.println(15 * (d2 - d1)); } else { System.out.println(500 * (m2 - m1)); } } }

**Note:** This problem **(Library Fine)** is generated by **HackerRank** but the solution is provided by **CodingBroz**. This tutorial is only for **Educational** and **Learning** purpose.