
25286번: 11월 11일
11월 11일에는 농업인의 날, 가래떡 데이, 보행자의 날, 대한민국 해군 창설 기념일, 유엔참전용사 추모의 날, 빼빼로 데이 등 다양한 의미를 가진 날이다. 성현이는 11월 11일의 11일 전은 10월 31일,
www.acmicpc.net
윤년이란?
두 조건 중 하나만 만족하면 된다.
1. 4로 나누어떨어지고 100으로 나누어 떨어지지않는다.
2. 400으로 나누어 떨어진다.
- 제목
11월 11일
- 조건
시간 제한 : 2 초
메모리 제한 : 1024 MB
- 문제
11월 11일에는 농업인의 날, 가래떡 데이, 보행자의 날, 대한민국 해군 창설 기념일, 유엔참전용사 추모의 날, 빼빼로 데이 등 다양한 의미를 가진 날이다. 성현이는 11월 11일의 11일 전은 10월 31일, 즉 할로윈 데이라는 것을 깨달았고, 다음 할로윈 데이 때 친구에게 빼빼로를 받아낼 계획을 세우고 있다.
성현이는 문득 11월 11일처럼 m월 m일의 m일 전이 또 다른 기념일인 m이 있는지 궁금해졌다. m월 m일의 m일 전의 날짜를 구하는 프로그램을 만들어보자.
1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지 있으며, 2월은 평년에는 28일, 윤년에는 29일까지 있다. 윤년이란, 연도가 100의 배수를 제외한 4의 배수이거나 400의 배수인 해를 의미한다.
- 입력
첫째 줄에 계산해야 하는 날짜의 수 $T$가 주어진다. (1 ≤ T ≤ 1212)
둘째 줄부터 $T$개의 줄에 날짜가 한 줄에 하나씩 주어진다. 날짜는 연도와 달을 의미하는 y_i, m_i가 공백으로 구분되어 주어진다. (2000 ≤ y_i ≤ 2100, 1 ≤ m_i ≤ 12)
- 출력
T개의 줄에 걸쳐 정답을 출력한다.
i번째 줄에 y_i년 m_i월 m_i일의 m_i일 전 날짜를 연, 월, 일 순으로 공백으로 구분해서 출력한다.
예제 입력1 | 예제 출력1 |
6 2000 3 2012 3 2022 3 2100 3 2022 1 2022 11 |
2000 2 29 2012 2 29 2022 2 28 2100 2 28 2021 12 31 2022 10 31 |
#include <iostream>
#include <algorithm>
#include <cmath>
#include <climits>
#include <vector>
using namespace std;
#define endl '\n'
#define fastio ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int day[13] = {0, 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool leapYear(int year){
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) return true;
return false;
}
int main() {
fastio;
int sz, year, month;
cin >> sz;
while(sz--){
cin >> year >> month;
if(month != 1){
month--;
if(month == 2){
if(leapYear(year)) day[month] = 29;
else day[month] = 28;
}
}
else{ // month == 1
year--;
month = 12;
}
cout << year << ' ' << month << ' ' << day[month] << endl;
}
return 0;
}
'Problem Solving > BaekJoon' 카테고리의 다른 글
[BOJ/백준] 1922 - 네트워크 연결 (0) | 2022.09.12 |
---|---|
[BOJ/백준] 25326 - 다중 항목 선호도 조사 (Small) (0) | 2022.09.12 |
[BOJ/백준] 25501 - 재귀의 귀재 (0) | 2022.09.10 |
[BOJ/백준] 25371 - k진수 정수의 자릿수 나누기 (0) | 2022.09.08 |
[BOJ/백준] 11404 - 플로이드 (0) | 2022.09.08 |

25286번: 11월 11일
11월 11일에는 농업인의 날, 가래떡 데이, 보행자의 날, 대한민국 해군 창설 기념일, 유엔참전용사 추모의 날, 빼빼로 데이 등 다양한 의미를 가진 날이다. 성현이는 11월 11일의 11일 전은 10월 31일,
www.acmicpc.net
윤년이란?
두 조건 중 하나만 만족하면 된다.
1. 4로 나누어떨어지고 100으로 나누어 떨어지지않는다.
2. 400으로 나누어 떨어진다.
- 제목
11월 11일
- 조건
시간 제한 : 2 초
메모리 제한 : 1024 MB
- 문제
11월 11일에는 농업인의 날, 가래떡 데이, 보행자의 날, 대한민국 해군 창설 기념일, 유엔참전용사 추모의 날, 빼빼로 데이 등 다양한 의미를 가진 날이다. 성현이는 11월 11일의 11일 전은 10월 31일, 즉 할로윈 데이라는 것을 깨달았고, 다음 할로윈 데이 때 친구에게 빼빼로를 받아낼 계획을 세우고 있다.
성현이는 문득 11월 11일처럼 m월 m일의 m일 전이 또 다른 기념일인 m이 있는지 궁금해졌다. m월 m일의 m일 전의 날짜를 구하는 프로그램을 만들어보자.
1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지 있으며, 2월은 평년에는 28일, 윤년에는 29일까지 있다. 윤년이란, 연도가 100의 배수를 제외한 4의 배수이거나 400의 배수인 해를 의미한다.
- 입력
첫째 줄에 계산해야 하는 날짜의 수 $T$가 주어진다. (1 ≤ T ≤ 1212)
둘째 줄부터 $T$개의 줄에 날짜가 한 줄에 하나씩 주어진다. 날짜는 연도와 달을 의미하는 y_i, m_i가 공백으로 구분되어 주어진다. (2000 ≤ y_i ≤ 2100, 1 ≤ m_i ≤ 12)
- 출력
T개의 줄에 걸쳐 정답을 출력한다.
i번째 줄에 y_i년 m_i월 m_i일의 m_i일 전 날짜를 연, 월, 일 순으로 공백으로 구분해서 출력한다.
예제 입력1 | 예제 출력1 |
6 2000 3 2012 3 2022 3 2100 3 2022 1 2022 11 |
2000 2 29 2012 2 29 2022 2 28 2100 2 28 2021 12 31 2022 10 31 |
#include <iostream>
#include <algorithm>
#include <cmath>
#include <climits>
#include <vector>
using namespace std;
#define endl '\n'
#define fastio ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int day[13] = {0, 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool leapYear(int year){
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) return true;
return false;
}
int main() {
fastio;
int sz, year, month;
cin >> sz;
while(sz--){
cin >> year >> month;
if(month != 1){
month--;
if(month == 2){
if(leapYear(year)) day[month] = 29;
else day[month] = 28;
}
}
else{ // month == 1
year--;
month = 12;
}
cout << year << ' ' << month << ' ' << day[month] << endl;
}
return 0;
}
'Problem Solving > BaekJoon' 카테고리의 다른 글
[BOJ/백준] 1922 - 네트워크 연결 (0) | 2022.09.12 |
---|---|
[BOJ/백준] 25326 - 다중 항목 선호도 조사 (Small) (0) | 2022.09.12 |
[BOJ/백준] 25501 - 재귀의 귀재 (0) | 2022.09.10 |
[BOJ/백준] 25371 - k진수 정수의 자릿수 나누기 (0) | 2022.09.08 |
[BOJ/백준] 11404 - 플로이드 (0) | 2022.09.08 |