โท ๋ฌธ์ ์ค๋ช
์ค๊ท๊ฐ ์ฌ๋ ๋๋ผ๋ ์ฐ๋๋ฅผ ํํํ ๋ E, S, M ์ธ ๋ฌธ์๋ก ํํํ๋ค.
๊ฐ๊ฐ์ ๋ฌธ์๊ฐ ๊ฐ์ง๋ ๋ฒ์๋ 1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19 ์ด๋ค.
E, S, M์ด ์ฃผ์ด์ง ๋, E S M์ผ๋ก ํ์๋๋ ๊ฐ์ฅ ๋น ๋ฅธ ์ฐ๋๋ฅผ ์ถ๋ ฅํ์.
โท ๋ฌธ์ ํ์ด
์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ ํํํ ์ ์๋ ๋ ๋๋ 15 * 28 * 19 = 7980๋ ๊น์ง ์ด๋ฏ๋ก
๋ธ๋ฃจํธํฌ์ค ๋ฐฉ๋ฒ์ผ๋ก 1๋ ๋ถํฐ 7980๋ ๊น์ง ๊ตฌํ๋ค๊ฐ ์ ๋ต๊ณผ ๊ฐ์์ง๋ ์๊ฐ์ ์ฐพ์ผ๋ฉด ๋๋ค.
์ด ๋, ๋ฌธ์ ์์ ์ฃผ์ด์ง E, S, M์ ๊ฐ์
year mod 15 = E,
year mod 28 = S,
year mod 19 = M ๋ฅผ ๋ํ๋ด๋ฏ๋ก(๋๋จธ์ง ๊ฐ)
1๋ ๋ถํฐ 7980๋ ๊น์ง ์ฐ๋๋ฅผ ์ฆ๊ฐ์ํฌ ๋,
ํ์ฌ ์ฐ๋ year๋ฅผ year % 15 && year % 28 && year % 19 ๋ก ๊ณ์ฐํ์ ๋,
๊ทธ ๊ฐ๋ค์ด ์ฃผ์ด์ง E, S, M์ ๊ฐ๊ณผ ๋ชจ๋ ์ผ์นํ๋ค๋ฉด ํ์ฌ์ ์ฐ๋๊ฐ ์ ๋ต ์ฐ๋์ด๋ค.
โท ์๊ฐ๋ณต์ก๋
ํํํ ์ ์๋ ๋ ๋๋ฅผ N์ด๋ผ ํ๋ฉด, N๊ฐ์ง์ ๊ฒฝ์ฐ์ ์๊ฐ ํ์ํ๋ฏ๋ก O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค.
โท ์ ๋ต์ฝ๋
#include <iostream>
using namespace std;
void Input();
void CalculateYear(int E, int S, int M);
int main() {
Input();
return 0;
}
void Input() {
int E, S, M;
cin >> E >> S >> M;
CalculateYear(E, S, M);
}
void CalculateYear(int E, int S, int M) {
int e = 1, s = 1, m = 1;
for (int year = 1; ; year++) {
if (e % 15 == E % 15 &&
s % 28 == S % 28 &&
m % 19 == M % 19){
cout << year;
break;
}e++, s++, m++;
}
}