[HackerRank/C++] Library Fine

2023. 2. 7. 07:49코딩테스트 해커랭크/Algorithms -Easy

도서관은 당신의 도움이 필요하다

 

반납일 d1, m1, y1과 반납 예정일 d2, m2, y2가 주어지며, 반납이 예정일보다 늦어졌을 경우 벌금을 부과해야 한다

 

벌금은 1일에 * 15 Hackos, 1개월에 * 500 Hackos, 1년 이상이면 10000 Hackos를 내야 하며 이중 하나를 지불해야 한다

 

긴 기간으로 된 벌금을 부과해야 하며 기간 계산은 일, 월, 년이 바뀌는 순간으로 계산될 때 벌금을 계산해서 return 한다

 

ex) 예정일이 2022.12.31인데 2023.01.01에 반납했다면 10000 Hackos를 벌금으로 내야 한다

int libraryFine(int d1, int m1, int y1, int d2, int m2, int y2)
{
    if (y1 > y2)
        return 10000;
    if (y1 >= y2 && m1 > m2)
        return (m1 - m2) * 500;
    if (y1 >= y2 && m1 >= m2 && d1 > d2)
        return (d1 - d2) * 15;
    
    return 0;
}

하나씩 예외처리를 해가면 되는 간단한 문제다

 

첫번째로 반납 년수가 예정일보다 늦다면 10000을 return 한다

 

두번째로 년수가 같거나 크며 개월수가 늦다면 (반납월 - 예정월) * 500 만큼의 벌금을 내야 한다

 

세번째로 년수가 같거나 크며 개월수가 같거나 크고 일수가 늦다면 (반납일 - 예정일) * 15 만큼의 벌금을 내야 한다

 

마지막으로 이중 아무것도 해당되지 않으면 연체되지 않은것이므로 벌금은 낼 필요 없으니 0을 return 한다