Calculate Date(by Modular)
๋์ ๋ฌธ์ ์ ๊ทผ ๋ฐฉ๋ฒ
ex) E = 1, S = 2, M = 3 ๋์ผํ n์ ๋ํด ๋ค์์ 3๊ฐ์ง ์กฐ๊ฑด์ ๋ง์กฑํ๋ n์ด ์ ๋ต์ด๋ผ๊ณ ์๊ฐํ๋ค. 15*n + 1 == E && 28*n + 2 == S && 19*n == M ๋๋จธ์ง ์ฐ์ฐ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๋ฅผ ๋ฐ๋๋ก ์๊ฐํด์ E, S, M์ ๊ฐ๊ฐ 15, 28, 19๋ก ๋๋ ๋๋จธ์ง๋ฅผ n์ด๋ผ๊ณ ํ๋ฉด n์ 0๋ถํฐ ๊ณ์ํด์ 1์ฉ ์ฆ๊ฐํ๊ณ , n%15 == E && n%28 == S && n%19 == M 3๊ฐ์ง๋ฅผ ๋์์ ๋ง์กฑํ๋ n์ ์ฐพ์ผ๋ฉด ๋๋ค.
ํ์ง๋ง ์ด๊ฒ๋ง์ ๋ ์ค๋ฅ๊ฐ ์ข ์๋ค. 1. ๋ํ์ ์ผ๋ก E๋ฅผ ๋ค๋ฉด n = 15/30/45/...15์ ๋ฐฐ์์ผ ๋ ๋๋จธ์ง๋ 0์ด ๋๋๋ฐ, n=15๋ผ๋ฉด ์ด๊ฒ์ 15๊ฐ ๋์ด์ผ ํ๋ค. ๊ทธ๋์ ๋๋จธ์ง๋ง 0์ด ๋๋ฒ๋ฆฌ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ์ ํ๊ฒ ์กฐ์ํด์ฃผ์ด์ผ ํ๋ค. (S์ M๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. n์ด 28์ ๋ฐฐ์์ด๊ฑฐ๋ n์ด 19์ ๋ฐฐ์์ผ ๋ ๋๋จธ์ง๊ฐ 0์ด ๋๋ฉด ์ ๋๊ณ 28, 19๋ก ๋จ์์์ด์ผ ํ๋ค.)
์ด๋ป๊ฒ ์กฐ์ํ ๊ฒ์ธ๊ฐ?
E) n = 15, n%15 = 15๋ฅผ ๋ง๋ค๋ ค๋ฉด, n-1์ ํด์ฃผ๊ณ ๋์ค๋ ๋๋จธ์ง 14์ ๋ํด +1์ ํด์ค๋ค. => n = 17, (n-1)%15 = 16%15 = 1 + 1 = 2(์ ๋ต) S์ M๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
์ด์ n์ 0๋ถํฐ 1์ฉ ๊ณ์ํด์ ์ฆ๊ฐ์ํค๋ฉฐ n%15==E-1 && n%28==S-1 && n%19==M-1 ๋ฅผ ๋ง์กฑํ๋ n์ ์ฐพ์์ n+1์ด ์ ๋ต์ด ๋๋ค.
2. n์ด 0๋ถํฐ ์์ํ๋ ์ด์
์ ๋ ฅ๋ฐ๋ ์ E,S,M์์ -1์ฉ ํด์ฃผ๊ณ , n์ 15,28,19๋ก ๋๋์์ ๋ ๋๋จธ์ง +1์ด ์ ๋ต์ด ๋๋ค. E, S, M์ด ์ซ์ ๊ทธ ์์ฒด๋ก 1,1,1 ์ด๊ณ i๋ 1๋ถํฐ ์์ํ๋ฉด ์ ๋ต์ด ๋์ง๋ง ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ์๊ธฐ ๋๋ฌธ์ E-1,S-1,M-1์ ํด์ฃผ๊ธฐ ๋๋ฌธใ ์ i๋ 1์ด ์๋ 0๋ถํฐ ์์ํด์ผํ๋ค.
์์ค ์ฝ๋ ๊ตฌํ
Last updated