반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [SW expert Academy] SWEA 1948번 날짜 계산기 자바(Java)

1) 난이도 : D2

 

2) 문제번호 : 1948번

 

3) 문제 출처

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

 

SW Expert Academy

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

swexpertacademy.com

 

2. 문제

월 일로 이루어진 날짜를 2개 입력 받아, 두 번째 날짜가 첫 번째 날짜의 며칠째인지 출력하는 프로그램을 작성하라.

3. 제약사항

- 월은 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

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

 

4. 입력

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

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

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

 

5. 출력

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

6. 풀이

- 달과 일을 더하여 뺀다.

7. 소스 코드

import java.util.*;
 
import javax.print.attribute.IntegerSyntax;
 
public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //테스트 케이스 개수 입력
        int[] dal = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
         
        int T = sc.nextInt();
        for(int tc=1;tc<=T;tc++) {
            int a = sc.nextInt()-1;
            int b = sc.nextInt();
            int c = sc.nextInt()-1;
            int d = sc.nextInt();
             
            //첫 월일
            int sum = 0;
             
            //두 번쨰 월일
            int sum2 = 0;
             
            for(int i=0;i<a;i++) {
                sum += dal[i];
            }
            sum = sum + b;
             
            for(int i=0;i<c;i++) {
                sum2 += dal[i];
            }
            sum2 = sum2+d;
             
            System.out.printf("#%d %d\n",tc,sum2-sum+1);
        }
    }   
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기