안녕하세요. 오늘은 달력에서 개수를 셀 거예요.
https://www.acmicpc.net/problem/26148
그냥 이차원 배열 만들어서 시작 요일을 기준으로 각 요일이 몇월 며칠인지 넣어주면 됩니다. 그 다음에 문제에 나와있는대로 구현해주면 됩니다.
근데 머리를 좀 써봅시다. 굳이 배열에 넣지 않아도 되지 않을까요? 그냥 1일부터 7일까지 보면서 각 일로 시작해서 5주를 채울 수 있는지만 보면 됩니다. 즉, 현재 일 수 + 28이 존재하는지 확인해주면 됩니다.
조금만 더 생각을 해보면 시작 요일이 필요가 없음을 알 수 있습니다.
그런데 조금만 더 생각을 해보면 2022년과 2023년은 다를게 없습니다. 그냥 고려해야할 부분은 윤년 뿐입니다. 윤년인지만 확인해서 29 또는 30을 출력해주면 됩니다.
코드를 입력하세요
#define ll long long
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
ll N;
cin >> N;
if (N % 4 == 0)
{
if (N % 100 == 0)
{
if (N % 400 == 0) cout << 30;
else cout << 29;
}
else cout << 30;
}
else cout << 29;
}
감사합니다.