본문 바로가기
알고리즘/SWEA

[SWEA / 날짜 계산기 / JAVA]

by KDW999 2023. 5. 3.

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PnnU6AOsDFAUq&categoryId=AV5PnnU6AOsDFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=2 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

문제 접근

두 번째 날짜가 첫 번째 날짜의 몇 번 째 날짜인지 구하라는데 처음엔 단순 두 날짜의 차이를 구하는지 알았는데, 차이를 구하고 +1해줘야 되더라(?)

 

고려해야 할 점은 매월 마지막 날짜가 다르단 건데

모든 월을 배열로 만들어서 사용해준다.

비교할 두 날짜의 월이 같다면 일수 차이만 비교해주고

 

월이 다르다면

시작 월의 총 일수  - 시작 월 일수 +

두 날짜 사이에 있는 모든 월의 일수 +

마지막 월의 일수

해주면 된다.

 

이후 출력할 때 +1 시키고 출력

 

import java.util.*;
import java.io.*;

public class Swea {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int T = Integer.parseInt(br.readLine()); // 테케
		
		for(int t=1; t<=T; t++) {
			StringTokenizer st = new StringTokenizer(br.readLine());

			int[] month = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
			int firstMonth = Integer.parseInt(st.nextToken());
			int firstDay = Integer.parseInt(st.nextToken());
			int secondMonth = Integer.parseInt(st.nextToken());
			int secondDay = Integer.parseInt(st.nextToken());
			
			int result = 0;
			
			if(firstMonth == secondMonth) result = secondDay - firstDay;
		
			else {
				result += month[firstMonth-1] - firstDay;
				for(int i = firstMonth+1; i< secondMonth; i++) result += month[i-1];
				result += secondDay;
			}
			
			System.out.println("#"+t+" " + (result+1));
			
		}
     }
  }

댓글