반응형
문제
코드
#include <iostream>
#include <string>
#include <algorithm>
#include <cstring>
using namespace std;
int main() {
int d, m, y;
int month[12] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
int specialyear;
int totalDay = 0;
while (true)
{
cin >> d >> m >> y;
if (d == 0 && m == 0 && y == 0)
break;
specialyear = 0;
if (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0))
{
specialyear = 1;
}
if (specialyear == 1 && m > 2)
{
++totalDay;
}
for (int i = 0; i < m; i++)
{
totalDay += month[i];
}
totalDay += d;
cout << totalDay << endl;
totalDay = 0;
}
return 0;
}
해설
조건식이나 다른 부분은 간단하게 이해할 수 있습니다. 다만 알고리즘은 시간이 조금 걸릴 수 있습니다. totalDay를 만들어준 다음 ++를 해주는 방식으로 했습니다.
먼저 d, m, y를 정한 다음에 month에 각 월의 일수를 저장하는 배열을 만듭니다. { 0 , 부터 시작하는 이유는 12월 같은 경우 day만 알면 되기 때문에 month가 필요없고, 1월 같은 경우도 d 만 알면 되기 때문에 0으로 해준 것입니다.
specialyear는 윤년 여부를 저장하는 변수입니다. 윤년이면 1, 아니면 0을 설정해 totalday에 윤년일 때는 1을 더해주는 방식으로 계산을 해줍니다.
전반적인 식은 무한 루프를 통해서 진행되며 만약 0 0 0 일 경우 break문을 통해 종료되도록 되어있습니다.
반응형
'IT 프로그래밍 > 백준' 카테고리의 다른 글
[c++] 백준 2292번 : 벌집 (0) | 2024.05.30 |
---|---|
[C++] 2720번 세탁소 사장 동혁 (0) | 2024.05.25 |
[c++] 백준 2563번 색종이 (0) | 2024.05.22 |
[C++] 백준 10798 세로읽기 (0) | 2024.05.22 |
[c++] 백준 2738번 : 행렬 덧셈 (0) | 2024.05.21 |