[백준] 1476번 날짜 계산 / C++
#문제
#풀이
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int e, s, m;
cin >> e >> s >> m;
int year = 1;
while ((year % 15 != e % 15) || (year % 28 != s % 28) || (year % 19 != m % 19))
{
year++;
}
cout << year;
return 0;
}
#정리
문제에서 입력 받는 e, s, m은 값은 year % 15, year % 28, year % 19로 출력이 가능함을 알 수 있었다. 첫 시도에서는 if (year % 15 == e && year % 28 == s && year % 19)를 사용하여 세 조건을 모두 만족하는 조건을 찾으려고 했으나, 시간 초과되어 실패했다. 조건을 평가해야 하기 때문에 성능에 문제가 있었다는 것을 알게 되었고, while 조건에서 바로 (year % 15 != e % 15) || (year % 28 != s % 28) || (year % 19 != m % 19)를 평가하여 해결할 수 있었다. 실패할 가능성이 높은 상황에서는 연산을 조기 중단할 가능성이 높은 코드로 작성하는 것이 효율적이라는 것을 배웠다.
Enjoy Reading This Article?
Here are some more articles you might like to read next: