본문 바로가기

SWEA/D2

[SWEA 1948][D2][JAVA] 날짜 계산기

[문제]

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PnnU6AOsDFAUq&categoryId=AV5PnnU6AOsDFAUq&categoryType=CODE

 

SW Expert Academy

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

www.swexpertacademy.com

[풀이 방법]

 

각 월별로 일수를 배열에 저장한 후, 주어진 두 날짜가 같은 달일 경우에는 일 (day) 만 비교해줍니다. 

다른 달일 경우에는 처음 주어진 달에서 두 번째 달까지 배열에 저장된 날짜를 더한 후

(2/13 ~ 5/18 이라면 2,3,4,5 월의 일 수를 모두 더해줌) 

그 결과값에서 13 만큼 / 31 - 18 만큼 감소해줍니다.

 

모든 날짜의 수는 비교 일수를 구한 후 +1을 해줘야 합니다. 

 

            int[] day_per_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

            

            int result = 0;

            if (fm == sm ) {

                result = sd - fd + 1;

                

            } else {

                result = 0;

                for (int i = fm-1; i <= sm-1; i++) {

                    result += day_per_month[i];

                }

                result -= fd;

                result -= day_per_month[sm-1] - sd;

                result += 1;

                

            }

            sf.append("#" + (k+1) + " " + result + "\n");