코딩테스트 준비/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();
}
}
}
반응형