문제
월 일로 이루어진 날짜를 2개 입력 받아, 두 번째 날짜가 첫 번째 날짜의 며칠째인지 출력하는 프로그램을 작성하라.
* 두 번째 날짜가 첫 번째 날짜보다 항상 크게 주어진다.
입력
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 4개의 수가 주어진다.
첫 번째 수가 월을 나타내고 두 번째 수가 일을 나타낸다. 그 다음 같은 형식으로 두 번째 날짜가 주어진다.
3 3 1 3 31 5 5 8 15 7 17 12 24 |
출력
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다. (t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
#1 31 #2 103 #3 161 |
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import java.util.Scanner;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for(int i=0; i<t; i++){
int mon1 = sc.nextInt();
int day1 = sc.nextInt();
int mon2 = sc.nextInt();
int day2 = sc.nextInt();
int result = calculator(mon1,mon2,day1,day2);
System.out.printf("#%d %d\n",i+1,result);
}
}
public static int calculator(int mon1, int mon2, int day1, int day2){
int[] month = {31,28,31,30,31,30,31,31,30,31,30,31};
int result = 0;
if(mon1 == mon2) {
return day2- day1+1;
}
for(int i = mon1; i<=mon2; i++){
if(i==mon1) result += month[i-1] - day1 + 1;
else if(i==mon2) result += day2;
else result += month[i-1];
}
return result;
}
}
|
cs |
'SW expert Academy > D2' 카테고리의 다른 글
[SW Expert Academy] 1940번 가랏! RC카! (0) | 2023.05.12 |
---|---|
[SW Expert Academy] 1946번 간단한 압축 풀기 (0) | 2023.05.12 |
[SW Expert Academy] 1954번 달팽이 숫자 (0) | 2023.05.12 |
[SW Expert Academy] 1959번 두 개의 숫자열 (1) | 2023.05.11 |
[SW Expert Academy] 1961번 숫자 배열 회전 (0) | 2023.05.11 |