[HackerRank] Library Fine

아르당·2023년 11월 17일
0

HackerRank

목록 보기
22/109
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

문제

지역 도서관은 도움이 필요하다. 도서관 책의 예상 반납일과 실제 반납일이 주어질때, 벌금을 계산하는 프로그램을 만들어라. 벌금 정책은 아래 규칙을 따른다.

  1. 만약 책이 예상 반납일 또는 이전에 반납됐다면, 벌금을 부과하지 않는다.
  2. 만약 책이 반납 일자만 다르고 월과 연도가 같게 반납됐다면, 벌금(15 * (반납일 - 예상 반납일))을 부과한다.
  3. 만약 책이 반납 월이 다르고 연도가 같게 반납됐다면, 벌금(500 * (반납월 - 예상 반납월))을 부과한다.
  4. 만약 책이 반납 연도가 다르게 반납됐다면, 벌금(10000)을 부과한다.

벌금은 가장 늦은 것에 기준을 둔다. 예를 들면 책이 2017년 1월 1일이나 2017년 12월 31일이 반납일이 었고 2018년 1월 1일에 반납됐을 때, 반납 기한이 1년 늦은 것으로 하여 벌금 10000을 부과한다.

Example

d1, m1, y1 = 14, 7, 2018
d2, m2, y2 = 5, 7, 2018

첫 번째 값은 반납일이고 두 번째 값은 반납 기한이다. 연도와 월이 같다. 책은 9일이 늦었다. 그래서 9 * 15 = 135를 반납한다.

Function Description

libraryFine 함수를 완성해라.
libraryFine 함수는 아래와 같은 매개변수를 가지고 있다.

  • d1, m1, y1: 반납일의 각 일, 월, 연도
  • d2, m2, y2: 반납기한의 각 일, 월, 연도

Return

  • int: 벌금 또는 0

Constraints

  • 1 <= d1, d2 <= 31
  • 1 <= m1, m2 <= 12
  • 1 <= y1, y2 <= 3000

전체 코드

public static int libraryFine(int d1, int m1, int y1, int d2, int m2, int y2) {
	if (y1 < y2 || (y1 == y2 && m1 < m2) || (y1 == y2 && m1 == m2 && d1 <= d2)) {
		return 0;
	} else if (y1 == y2 && m1 == m2) {
		return 15 * (d1 - d2);
	} else if (y1 == y2) {
		return 500 * (m1 - m2);
	} else {
		return 10000;
	}
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글