[백준] 1476번 날짜 계산 / C++

#문제

백준 1476번 날짜 계산

#풀이

#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:

  • [백준] 18258번 큐 2 / C++
  • [백준] 1057번 토너먼트 / C++
  • [백준] 1002번 터렛 / C++
  • [백준] 10825번 국영수 / C++
  • [백준] 10816번 숫자 카드 2 / C++