개발에 AtoZ까지

[JAVA][D2] 1976. 시각 덧셈 본문

코딩테스트 준비/SWEA

[JAVA][D2] 1976. 시각 덧셈

AtoZ 개발자 2021. 1. 10. 17:16
반응형

문제 

[제약 사항]

월은 1 이상 12 이하의 정수이다. 각 달의 마지막 날짜는 다음과 같다.

1/31, 2/28, 3/31, 4/30, 5/31, 6/30, 7/31, 8/31, 9/30, 10/31, 11/30, 12/31

두 번째 날짜가 첫 번째 날짜보다 항상 크게 주어진다.


[입력]

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 4개의 수가 주어진다.

첫 번째 수가 월을 나타내고 두 번째 수가 일을 나타낸다. 그 다음 같은 형식으로 두 번째 날짜가 주어진다.


[출력]

출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다. (t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

예시

 

풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Solution {
	public static void main(String[] args) {
		int[] days = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		try {
			int T = Integer.parseInt(br.readLine());
			// 테스트케이스 반복
			for (int i = 1; i <= T; i++) {
				String[] strDay1 = br.readLine().split(" ");
				int[] month = new int[2];
				int[] day = new int[2];
				//입력값 넣기
				month[0] = Integer.parseInt(strDay1[0]);
				month[1] = Integer.parseInt(strDay1[2]);
				day[0] = Integer.parseInt(strDay1[1]);
				day[1] = Integer.parseInt(strDay1[3]);
				//일자 합산
				int sumDay = 0;
				//첫번째달에서 두번째달전까지의 day 합산
				for (int j = month[0]; j < month[1]; j++) {
					sumDay += days[j-1];
				}
				//첫번째달의 일자를 빼주고 두번째달의 일자를 더해준다
				sumDay = sumDay-day[0] + day[1] + 1;
				System.out.println("#" + i + " " + sumDay);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}
반응형
Comments