코딩테스트/SWExpertAcademy

날짜 계산기 C++(SW Expert Academy)

멍토 2020. 2. 12.

난이도 : D2

문제번호 : 1948

※ 저의 풀이가 무조건적인 정답은 아닙니다.

다른 코드가 좀더 효율적이고 좋을 수 있습니다.

다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.

문제 주소 및 출처입니다.

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

 

SW Expert Academy

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

swexpertacademy.com


목차

1. 문제 설명

2. 문제 해석

3. 소스 코드


1. 문제 설명

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

제약사항

월은 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부터 시작한다.)

예시

입력 출력


3 1 3 31
5 5 8 15
7 17 12 24  

#1 31
#2 103
#3 161

2. 문제풀이

달의 차이만큼의 일수를 더해주고

마지막 입력으로 들어온 달의 일수와

처음입력으로 들어온 달의 일을 그달의 총일에서 빼준값을 더해주고 그 값을 출력했습니다. 

 


3. 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
//1948 D2 날짜 계산기
int main() {
    //전체 반복횟수
    int len, days[12]{312831303130313130313031};
    //달과 일을 입력받음
    int month[2], day[2];
    cin >> len;
    for (int l = 1; l <= len; l++) {
        cin >> month[0>> day[0>> month[1>> day[1];
        int result = 0;
        //달의 차이만큼 날짜 더해주기
        for (int i = month[0- 1; i < month[1- 1; i++) {
            result += days[i];
        }
        result += day[1- (day[0- 1);
        cout << "#" << l << " " << result << endl;
    }
    return 0;
}

 

댓글

💲 광고입니다.