https://swexpertacademy.com/main/solvingProblem/solvingProblem.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
1. 해당 month에 대한 날짜수를 day벡터에 pair로 초기화해서 월과 매칭되는 날짜를 구할 수 있도록 한다.
2. month1과 month2의 사이에 있는 월들을 month벡터에다 집어넣고,
3. day벡터의 첫번째 요소와 같은 month들의 날짜 수들의 합을 sum에다가 저장한다.
4. 그 후 ( day2 + sum - day1 ) + 1; 를 해주면 날짜 수를 계산 할 수 있다.
핵심 코드는
result = ( day2 + sum - day1 ) + 1;
#include <iostream>
#include <vector>
using namespace std;
int main() {
int T;
cin >> T;
for(int t=1; t<=T; t++) {
vector<pair<int, int>> day = {{1,31},{2,28},{3,31},{4,30},{5,31},{6,30},{7,31},{8,31},{9,30},{10,31},{11,30},{12,31}};
int month1, day1, month2, day2;
cin >> month1 >> day1 >> month2 >> day2;
int month1_day;
vector<int> month;
for(int i = month1; i < month2; i++) month.push_back(i);
for(int i=0;i<12;i++)if(month1 == day[i].first){ month1_day = day[i].second; }
int sum = 0; //해당 month1 ~ month2 사이 month의 날짜수 합
for(int i=0;i<month.size();i++){
for(int j=0;j<12;j++){
if ( month[i] == day[j].first) { sum += day[j].second; break; }
}
}
int result = 0;
result = ( day2 + sum - day1 ) + 1;
cout << "#" << t << " " << result << "\n";
}
return 0;
}
'코딩테스트 연습 > SWEA' 카테고리의 다른 글
[SWEA] 1244. [S/W 문제해결 응용] 2일차 - 최대 상금 d3 (c++) (0) | 2022.05.27 |
---|---|
[SWEA] 1285. 아름이의 돌 던지기 D2 (c++) (0) | 2022.05.25 |
[SWEA] 1959. 두 개의 숫자열 D2 (c++) (0) | 2022.05.25 |
[SWEA] 1983. 조교의 성적 매기기 D2 (c++) (0) | 2022.05.24 |
[SWEA] 1961. 숫자 배열 회전 d2 (c++) (0) | 2022.05.24 |