๋ก๋ง ์ซ์ ๋ณํ๊ธฐ๋?
์ด ๋๊ตฌ๋ ์ฐ๋ฆฌ๊ฐ ํ์์ ์ฐ๋ ์ญ์ง์๋ฅผ ๋ก๋ง ์ซ์๋ก ๋ฐ๊พธ๊ณ , ๋ฐ๋๋ก ๋ก๋ง ์ซ์๋ฅผ ์ผ๋ฐ ์ซ์๋ก ๋ค์ ๋ณํํด ์ค๋๋ค. ์๊ณ ๋ฌธ์ํ, ์ฑ ์ ์ฅ(็ซ ) ๋ฒํธ, ์ํ ํฌ๋ ๋ง, ๊ธฐ๋ ๋ฌผ ๋ฑ์์ ํํ ๋ณผ ์ ์๋ ํ์ค ๊ฐ์ฐ ํ๊ธฐ๋ฒ(๋นผ๊ธฐ ํ๊ธฐ๋ฒ)์ ์ฌ์ฉํ๋ฉฐ, 1๋ถํฐ 3999๊น์ง์ ๋ชจ๋ ์ ์์ ์ ์ฉ๋ฉ๋๋ค. ์ด ๋ฒ์๋ ์์ ๋ง๋(๋ฐ)๋ฅผ ๊ธ๊ฑฐ๋ ํน์ ๊ธฐํธ๋ฅผ ์ฐ์ง ์๊ณ ํํํ ์ ์๋ ์ผ๋ฐ์ ์ธ ํ๊ณ์ ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
๋จผ์ ๋ณํ ๋ฐฉํฅ์ ๊ณ ๋ฅด์ธ์. ์ซ์ โ ๋ก๋ง ์ซ์๋ฅผ ์ ํํ๋ค๋ฉด 1๋ถํฐ 3999 ์ฌ์ด์ ์ ์๋ฅผ ์
๋ ฅํฉ๋๋ค. ๋ก๋ง ์ซ์ โ ์ซ์๋ฅผ ์ ํํ๋ค๋ฉด MCMXCIV์ฒ๋ผ ๋ก๋ง ์ซ์๋ฅผ ์
๋ ฅํ๋ฉด ๋๊ณ , ๋์๋ฌธ์๋ ๊ตฌ๋ถํ์ง ์์ต๋๋ค. ๋ณํ๊ธฐ๋ ๋ก๋ง ์ซ์์ ๊ทธ์ ํด๋นํ๋ ์ญ์ง์ ๊ฐ์ ํจ๊ป ๋ณด์ฌ ์ฃผ๋ฏ๋ก ๊ฒฐ๊ณผ๋ฅผ ํ๋์ ํ์ธํ ์ ์์ต๋๋ค.
๋ณํ ์๋ฆฌ
๋ก๋ง ์ซ์๋ ์ผ๊ณฑ ๊ฐ์ ๊ธฐํธ๋ก ์ด๋ฃจ์ด์ง๋๋ค: I=1, V=5, X=10, L=50, C=100, D=500, M=1000. ์ซ์๋ฅผ ๋ณํํ ๋๋ ํ์(greedy) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค. ๊ฐ์ฅ ํฐ ๊ฐ๋ถํฐ ์์ํด, ํ์ฌ ๋จ์ ์์ ๋ค์ด๊ฐ ์ ์๋ ๊ฐ์ฅ ํฐ ๊ฐ-๊ธฐํธ๋ฅผ ๋ฐ๋ณตํด์ ๋นผ๋ฉด์ ํด๋น ๊ธฐํธ๋ฅผ ๋ง๋ถ์ฌ ๋๊ฐ๋ ๋ฐฉ์์ ๋๋ค. ๋นผ๊ธฐ ํ๊ธฐ ์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ชฉ๋ก์ CM=900, CD=400, XC=90, XL=40, IX=9, IV=4๋ ํฌํจํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํญ์ ๊ฐ์ฅ ์งง์ ํ์ค ํ๊ธฐ๊ฐ ๋ณด์ฅ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด 4๋ IIII๊ฐ ์๋๋ผ IV๋ก ํํ๋ฉ๋๋ค.
$$\text{Roman} = \operatorname{greedy}\!\left(\text{Number}\right) = \sum_{k}\; \text{sym}_k \times \left\lfloor \frac{\text{remainder}}{\text{val}_k} \right\rfloor$$๋ณํ์ \(1 \le \text{Number} \le 3999\) ๋ฒ์์์ ์ด๋ฃจ์ด์ง๋ฉฐ, ์ญ๋ณํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$\text{Number} = \sum_{\text{token} \,\in\, \text{Roman Numeral}} \text{value}(\text{token})$$
์์ ๋ก ๋ณด๋ ๋ณํ
2024๋ฅผ ๋ณํํด ๋ด ์๋ค. \(2024 - 1000 = 1024\)(M), ๋ค์ \(-\,1000 = 24\)(MM), ์ด์ด์ \(24 - 10 = 14\)(X), \(-\,10 = 4\)(XX), ๋ง์ง๋ง์ผ๋ก 4๋ IV์ ์ผ์นํฉ๋๋ค. ๊ฒฐ๊ณผ๋ MMXXIV์ ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์ 3999๊น์ง๋ง ๋๋์? ํ์ค ๋ก๋ง ์ซ์์ ์ต๋๊ฐ์ MMMCMXCIX(3999)์ ๋๋ค. ๊ทธ๋ณด๋ค ํฐ ์๋ ์ ํต์ ์ผ๋ก ๊ธฐํธ ์์ ๋ง๋(๋น์ฟจ๋ฃธ, vinculum)๋ฅผ ๊ทธ์ด 1000์ ๊ณฑํด ํํํ๋๋ฐ, ์ด๋ ๊ธฐ๋ณธ ์ฒด๊ณ์ ํฌํจ๋์ง ์์ต๋๋ค.
0์ ๋ํ๋ด๋ ๋ก๋ง ์ซ์๊ฐ ์๋์? ์์ต๋๋ค. ๋ก๋ง์ธ์๊ฒ๋ 0์ ๊ฐ๋ฆฌํค๋ ๊ธฐํธ๊ฐ ์์๊ณ , ์ด ์ฒด๊ณ ์์ 0์ด ๋ค์ด์ค ์๋ฆฌ๋ ์์ต๋๋ค.
IIII๋ ํ๋ฆฐ ํ๊ธฐ์ธ๊ฐ์? ์ผ๋ถ ์๊ณ ๋ฌธ์ํ์์๋ ๋ฏธ๊ด์ ๊ท ํ์ ์ํด IIII๋ฅผ ์ฐ๊ธฐ๋ ํฉ๋๋ค. ํ์ง๋ง 4์ ์ํ์ ํ์ค ํ๊ธฐ๋ IV์ด๋ฉฐ, ์ด ๋๊ตฌ๋ IV๋ก ํ์ํฉ๋๋ค.