ํ์ ๊ณก์ ์ ์์๋ณด์๋ค๋ฉด, ์ด๊ฑธ ํ ๋๋ก ์ํธ๋ฅผ ๋ง๋ค์ด๋ณด์.
์ ํ์ฒด์์ ์ ์๋ ํ์ ๊ณก์
- 2์ฅ์์ ๋ณด์๋ ํ์ ๊ณก์ ์ โ์ค์์ฒดโ์์ ์ ์๋์๋ค.
- ๋ฌดํ์งํฉ
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฝ ์ฐฌ ๊ณก์ ์ผ๋ก ๋ณด์๋ ๊ฒ
- ์ด์ ์ด ์ ์๋๋ ๊ณต๊ฐ์ ์ ํ์ฒด๋ก ๋ฐ๊ฟ ๊ฒ์ด๋ค.
- ๋จผ์ ์ ํ์ฒด๋ ์ค์์ฒด์ ์งํฉ์ ์ฑ๊ฒฉ(์ ํ/๋ฌดํ)๋ง ๋ค๋ฅผ ๋ฟ ๋ค๋ฅธ ํน์ง์ ๊ทธ๋๋ก ๊ฐ๋๋ค.
- ์ฆ, ์ฝ๊ฒ ๋งํด ์ฌ์น์ฐ์ฐ์ ๋ํด ๋ซํ์๋ โ์ฒดโ์ ํน์ฑ์ ๊ฐ๋๋ค.
- ์ฌ๊ธฐ์ ์ ์ฉํ๊ฒ ์ฐ์ผ๋งํ ๊ฐ๋ ์,
- ์์์ ๋ฐฐ์ด ์ ๋ง์ ์ ์ฐ์ฐ์ด ์ด๋ค ์ฒด์์ ์ ์๋๋ ์ง์ ๊ด๊ณ์์ด ์ ์ง๋๋ค๋ ๊ฒ์ด๋ค.
- ์ฆ, ์ฒด๊ฐ ๋ณํํ๋ฉด์ ์ผ๋ฐ ๋ง์ โ ๋ชจ๋๋ฌ ๋ง์ ๊ณผ ๊ฐ์ด ๋ณํํ๋ ๊ฒ์ ์ ์ธํ๋ฉด,
- ํ์ ๊ณก์ ์์์ ์ถ๊ฐ์ ์ผ๋ก ์ ์ํ โ์ ๋ง์ โ ์ญ์ ์ ์ฉ๋๋ค๋ ๊ฒ์ด๋ค.
์์
- ์์ ์ ์๋ ์ ํ์ ๊ณก์ ์ ์๊ฐํด๋ณด์.
- ์ผ๋จ ํน์ ๊ฐ์ ๋ฃ์ด ์ํ๋์ง ํ์ ํ๋ ๋ฐฉ๋ฒ๋ถํฐ ์์๋ณด์.
- ๋ฅผ ์๊ฐํด๋ณด์.
- ๊ฐ์ ๋ฃ์ด์ ๊ณ์ฐํ ์์ ์ฐ์ฐ ๋ฐฉ๋ฒ์ ๋ชจ๋๋ฌ ์ฐ์ฐ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์๋ค.
- ๊ทธ๊ฒ ์ฐจ์ด์ ์ ์ ๋ถ๋ค.
- ์ด๋ฐ ์ฐ์ฐ ๋ฐฉ์์ ์ ์ฉํ์ ๋, ์ค์ ๊ทธ๋ ค์ง๋ ์ ๋ค์ ์ด๋ค ๋ถํฌ๋ฅผ ๊ฐ์ง๊น?
- ์ฐ์ฌ๋ ๋ชจ์ต์ด๋ค.
- ์ ๊ธฐ์ค์ผ๋ก ๋์นญ์ด๋ค.
- ์๋ฐํ ๋งํ๋ฉด ๋ถ๋ถ์ ์ ์๋์ง ์์ผ๋ฏ๋ก ์ด๊ฒ๋ ์๋๋ค.
- ํจ์๊ฐ๋ง ์ผ์นํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ฐ์ ๋์์ ์ด๋ ํ ํต์ฐฐ์ ์ป๊ธฐ๋ ์ด๋ ต๋ค.
- ๋ค๋ง ๊ทธ๋ผ์๋ ์ ๋ง์ ์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด ์ค์ํ๋ค.
์ ํ์ฒด ์์๋ฅผ ํ์๊ณก์ ์ ๋ฃ์ด๋ณด๊ธฐ
- ๋ค์ด๊ฐ๋ ์์๊ฐ ์ค์์์ ์ ํ์ฒด์ ์์๋ก๋ง ๋ณ๊ฒฝ๋๋ฉด ๋๋ค.
- ์ด๋ฅผ ํ๊ธฐ ์ํด์ ์ฐ๋ฆฌ๋
FieldElement
์ ๊ฐ ์ฌ์น ์ฐ์ฐ(+, -, *, **)๋ฑ์ ์ ์ํ์๋ค.
Point(FieldElement_223(220),FieldElement_223(181))_FieldElement_223(0)_FieldElement_223(7)
- ๊ฐ๊ฐ์ ์ธ์๋ก ๋ค์ด๊ฐ๋ x, y, a, b๊ฐ ๋ชจ๋ ์ ํ์ฒด์ ์์๋ก ๋์น๋์๋ค.
- ๊ฒฐ๊ณผ๋ ์ ํ์ฒด์ ์์๋ฅผ ์ฌ์ฉํ ๊ฒฐ๊ณผ๋ก ๋์๋ค.
- ์ ํ์ฒด๋ผ๋ฆฌ์ ์ฐ์ฐ์ ๋ํด ๋ช ์์ ์ผ๋ก ์ ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฆ๊ฐ ์ ์ฉ๊ฐ๋ฅํ ๊ฒฐ๊ณผ์ด๋ค.
ํ์ ๊ณก์ ์์ ์ ๋ค์ ์ค์นผ๋ผ ๊ณฑ์
- ์ค์นผ๋ผ ๊ณฑ์ ์ด๋, ํฌ๊ธฐ์ ๊ดํ ์์๋ฅผ ๊ฐ ๋ฒกํฐ ์ปดํฌ๋ํธ์ ๊ณฑํ๋ ๊ฒ์ ๋งํ๋ค.
- 2์ฅ์์ ์ฐ๋ฆฌ๋
Point
๋ผ๋ฆฌ์ ๋ง์ ์ ์ ์ํ์๋ค.
- ์ด๋ ํ
result
๋ผ๋ ๋ณ์๊ฐ ์์ ๋,result
๋ฅผ ๋ํ ๊ฒ์3result
๋ผ๋ ๋ณ์์ ๋ด์ ์ ์๋ค.
- ์ด๋ ๊ฒ ๊ฐ์ ๊ฒ์ ์ฌ๋ฌ๋ฒ ๋ํ๋ ๊ฒฝ์ฐ ๊ตณ์ด ์ด๋ฐ ํํ ํํ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ ๊ฐ์ ํํ๋ก ์ฐ์๊ณ ์ฝ์ํ ์ ์๋ค.
- ์ด๋ฅผ ์ค์นผ๋ผ ๊ณฑ์ ์ด๋ผ ํ๋ค. ์ ๋ง์ ์ ๊ฒฐํฉ๋ฒ์น์ด ์ฑ๋ฆฝํ๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ์ค์นผ๋ผ ๊ฐ์ ๊ณฑํ ์ ์๋ค.
- ์ฝ๋๋ก ๊ตฌํํ์๋ฉด ํน์ ์์ (์ด ๊ฒฝ์ฐ์๋ ์ ํ์ฒด์ ์์(
FieldElement
)๊ฐ ์๋๋ค.)๊ฐ ๋ค์ด์์ ๋ ์ด๋ป๊ฒ ์ฐ์ฐํ ์ง๋ฅผ ์ ์ํด์ฃผ๋ฉด ๋๊ฒ ๋ค.
- ์ด ์ฝ๋๋ฅผ ๋ณด๋ค๋ณด๋ฉด โ์? ์ result๋ฅผ ๋ฌดํ์์ ์ผ๋ก ๊ฐ์ ํ์ง?โ ๋ผ๋ ์๋ฌธ์ด ๋ค์ ์๋ค.
- ์ด๋ ์๋์์ ์ค๋ช ํ๊ฒ ๋ค.
์ค์นผ๋ผ ๊ณฑ์ ์ ๊ฒฐ๊ณผ
- ์ผ๋จ ์ค์นผ๋ผ ๊ณฑ์ ์ ๊ฒฐ๊ณผ๊ฐ ์ด๋ป๊ฒ ๋์ค๋์ง ํ์ธํด๋ณด์.
- ์ ๋ํด ์์ ์ (170, 142)์์์ ๊ณฑ์ ๊ฒฐ๊ณผ์ด๋ค.
- ์ผ์ชฝ์ ์ซ์๋ ์ค์นผ๋ผ ๊ณฑ์ ๊ณ์๋ฅผ ๋ํ๋ธ ๊ฒ์ด๋ค.
- ๋ณด๋ฉด 1์ด ์ค๋ฅธ์ชฝ ์ค๊ฐ์, 2๊ฐ ์ผ์ชฝ ์ค๊ฐ์ ์๋ค.
- ์ ๋ง์ ์์ฒด๊ฐ โ๋น์ ํโ ์ฐ์ฐ์ธ๋ฐ, ๊ทธ๊ฑธ n๋ฒ ์ ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ ๋น์ ํ์ด๋ค. ์์ฒญ๋๊ฒ ํฉ์ด์ ธ ์๋ค.
- ๊ณฑ์ ์ ๋จ์ํ ๊ณ์ฐํ๋ฉด ๋๊ธด ํ๋ฐ, ์ ์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์ค์นผ๋ผ ๊ณ์๋ก ๋๋ , ์ด๋ค ์ ์์ ๋ถํฐ ์๋์ง ์ฐพ๋ ๊ฒ์ ์ด๋ ต๋ค.
- ์ฆ, ์ ๋๋์ ์ ์ด๋ ค์ด ์ฐ์ฐ์ด๋ค. (์ผ๋ฐฉํฅ ํจ์)
- ์ด ์ ์ด ํ์๊ณก์ ์ํธ ๋ฐฉ๋ฒ์ ์๋ฆฌ์ด๋ค.
- ์ด์ฐ ๋ก๊ทธ ๋ฌธ์ ๋ผ ์๋ ค์ ธ ์๋ค.
์ค์นผ๋ผ ๊ณฑ์ ์ ์ฑ์ง
- ์, ์ด์ ์์์ ์ ๋ฌดํํ ์ค์นผ๋ผ ๊ณฑ์ ํ์ ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ฌดํ ์์ ์ด๋ผ ๊ฐ์ ํ๊ณ ์ฐ์ฐ์ ๊ตฌํํ๋์ง ์ค๋ช ํ๊ฒ ๋ค.
- ์๋ฐํ ์ฆ๋ช ์ ์๋๊ณ ์ฌ๊ณ ์คํ์ ๋๋ผ ์๊ฐํด์ฃผ๋ฉด ๋๊ฒ ๋ค.
- ์ผ๋จ ๊ฒฐ๋ก ์ ์ค์นผ๋ผ ๊ฐ์ ๊ณ์ ์ฆ๊ฐ์์ผ์ ๊ณฑํ๋ ๊ฒฝ์ฐ ๋ฌดํ์์ ์ ๋๋ฌํ๊ฒ ๋๋ค. ์ด๋ฅผ ์ํ์ ์ผ๋ก โ๊ตฐโ์ ์ด๋ฃฌ๋ค๊ณ ํ๋ค.
- ํน์ A์ ๋ํด ์ ์ด ์ด๋ค์์ผ๋ก ์ด๋ํ ์ ์๋์ง ํ๋ฒ ๊ทธ๋ฆผ์ผ๋ก ๋ณด๋ฉด ์์ ๊ฐ๋ค.
- ์ฐ์ฐ์ด ์งํ๋จ์ ๋ฐ๋ผ ์ ์ด ์ชฝ์ผ๋ก ์ด๋ํ๋ค.
- ์๋ฐํ ์ฆ๋ช ์ ์ง์์ ๋ฒ์๋ฅผ ๋์ด์ ๋ค..
- ์ด๋ ๊ฒ๋ผ๋ ์ดํดํ๊ณ ๋์ด๊ฐ๋ ๊ฒ ์ข๋ค๊ณ ์๊ฐํ์ฌ ์ถ๊ฐํ๋ค.
์ ํ๊ตฐ
- ์ด๋ค์ G์ ์ค์นผ๋ผ ๊ณฑ์ ์ ํค์๊ฐ๋ฉด์ ํ์ ๋ ๋์ค๋ ์งํฉ์ ๋ํด ์๊ฐํด๋ณด์.
- n์ ๋ฌดํํ ํค์ธ ๊ฒฝ์ฐ ๋ค๋ค๋ฅด๋ ์ ์ ํญ๋ฑ์, ์ฆ ๋ฌดํ์์ ์ด๋ฉฐ 0์ด๋ผ ๋ณผ ์ ์๋ค.
์ ์ด์ฐ ๋ก๊ทธ ๋ฌธ์ ์ธ๊ฐ?
- ์ค์นผ๋ผ ๊ณฑ์ ์ โ์ ๋ง์ โ์ ์ฌ๋ฌ๋ฒ ํ ๊ฒ์ ํํํ ๊ฒฐ๊ณผ๋ผ ํ ์ ์๋ค.
- ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ โ์ ๋ง์ โ์ ์ฐ๋ฆฌ๊ฐ ํธ์๋ฅผ ์ํด ๋ง๋ค์ด๋ธ ์ฐ์ฐ์ผ ๋ฟ์ด๋ค.
- ๊ตณ์ด โ+โ๊ธฐํธ๋ฅผ ํตํด ํํํ ๊ฒ์ผ ๋ฟ์ด๋ผ๋ ๋ง์ด๋ค.
- ์ด ์ฐ์ฐ์ โ์ ๊ณฑ์ โ์ด๋ผ๊ณ ๋งํด๋ ์ ํ ๋ฌด๋ฐฉํ๋ค. ๋ณธ์ง์ ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ด ์ ๊ณฑ์
์ ์ฐ์ํด์ ์ ์ฉํ๋ค๋ฉด, ๊ทธ ํํ๋ ์ง์๊ฐ ๋ ๊ฒ์ด๋ค.
- ๋ง์ ์ฐ์ โ ์์๋ฅผ ๊ณฑํ๋ ๊ผด
- ๊ณฑ์ ์ฐ์ โ ์ง์ ๊ผด
- ์ด๋ค ์ P๋ฅผ 7๋ฒ โ์ฐ์ฐโํ ๊ฒฐ๊ณผ๋ฅผ ์์์ผ๋ก ์ ์ด๋ณด์.
์ ๋ง์ ์ผ๋ก ์ ์ํ ๊ฒฝ์ฐ
์ ๊ณฑ์ ์ผ๋ก ์ ์ํ ๊ฒฝ์ฐ
์ ๋ฆฌ
- ๋ณธ์ง์ ๊ฐ๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ด๊ฑด ์ฐ๋ฆฌ๊ฐ ์๋กญ๊ฒ ์ ์ํ ์ฐ์ฐ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ณดํต ์ง์๊ผด๋ก ์ ๋ฆฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ โ์ด์ฐ ๋ก๊ทธ ๋ฌธ์ โ๋ผ ์๋ ค์ ธ ์๋ค.
- ํ์ง๋ง ๋ณธ์ง์ ๊ฐ๋ค. โ์ ๋ง์ โ์ด๋ผ๋ ์ฐ์ฐ์ ์ฌ๋ฌ๋ฒ ๊ณฑํ์ ๋ ๋ฐ์ํ๋ ๋น์์ธก์ฑ๋๋ฌธ์ ๋ฐฉ์ ์ ํด์์ ์๊ฐ์ด ๋ฌ๋ผ์ง์ ๋งํ๊ณ ์๋ค. (์ญ์ฐ์ ์ด๋ ค์)
์ ํ์ํ๊ตฐ
- ์ ํ์ฒด์์ ์ ์ํ ํ์๊ณก์ ์ ๋ํด ๋ฐฐ์ ๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ํน์ ์ ์ ์ก๊ณ , ์ค์นผ๋ผ ๊ณฑ์ ์ ํ ๊ฒฝ์ฐ ๋์ค๋ ์์๋ค์ ๋ฌถ์ด โ๊ตฐโ์ด๋ผ ์นญํ๋ค๊ณ ํ๋ค.
- ์ด๋ ๊ฒ ํ ์ ์ ์ค์นผ๋ผ ๊ฐ์ ๊ณฑํด์ ๋์ค๋ ๊ตฐ์ โ์ ํ์ํ๊ตฐโ์ด๋ผ ํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ทธ ํ ์ ์ โ์์ฑ์ โ์ด๋ผ ํ๋ค.
- ์ค์ ๋ก ๊ณต๊ฐํค ์ํธ์์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ํ์ํ๊ตฐ์ด๋ค.
๊ตฐ์ ํน์ง
- ํ๋์ ์ฐ์ฐ์ ๋ํด์ ๋ซํ์๋ค.
- ์ฒด: ์ฌ์น์ฐ์ฐ์ ๋ํด์ ๋ซํ์์์
- ํญ๋ฑ์์ด ์กด์ฌํ๋ค.
- ๋ฌดํ ์์
- ์์์ ์ฃผ๊ตฌ์ฅ์ฐฝ ์ค๋ช ํ๋ค.
- ๊ตฐ์ ๋ํด ๋ซํ์๋ค.
- ์ ๋ํ ๋ฌธ์ ๋ฅผ ํ๋ฉด๋๋ค.
- ๋จ a, b๋ n(์์)๋ณด๋ค ์๋ค.
- ์ด๊ฑด ์ฌ์ด๋ฐ, (a+b)๊ฐ n๋ณด๋ค ํฐ๊ฒฝ์ฐ, ์์ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ฆ๋ช ํ๋ฉด๋๋ค.
- ํฌ๋ค๋ฉด ์์์ ์ํด ๋๋์ด์ง ๋๋จธ์ง ์์๋ก ๋จ์ด์ง ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ์๋ค.
- ์๋ค๋ฉด ๋น์ฐํ ๊ตฐ์์ ๋ค์ด์์ผ๋ ๋ฌธ์ ์๋ค.
- ์์ธํ ์ฆ๋ช ์ ์ฑ ์ ๋ณด์.
- ์ ๋ํ ๋ฌธ์ ๋ฅผ ํ๋ฉด๋๋ค.
- ์ญ์์ด ์กด์ฌํ๋ค.
- ์ด๊ฒ๋ ์์์ ๊ทธ๋ฆผ์ผ๋ก ๋ดค์๋ค. ๋ฌดํ์์ ์ ๋ง๋ค์ด์ฃผ๋ ์ญ์์ด ํญ์ ์กด์ฌํ๋ค. (๊ทธ๋ํ์์ x์ถ ๋์นญ์ )
- ๊ตํ๋ฒ์น ์ฑ๋ฆฝ
- ๊ฒฐํฉ๋ฒ์น ์ฑ๋ฆฝ
Binary Expansion
- ์ด์ ์ ์ด๊ธฐ๊ฐ์ ๋ฌดํ ์์ ์ผ๋ก ์ค์ ํ๊ณ ์ค์นผ๋ผ ๊ณฑ์ ์ ๊ตฌํํ๋์ง๋ ์ ์ ์๋ค.
- ๊ทธ๋ฐ๋ฐ ์ค์นผ๋ผ ๊ณฑ์ ์ ์์๊ฐ ๋งค์ฐ ํฐ ์ซ์๋ผ๋ฉด ๋ฃจํ๋ฅผ ๋งค์ฐ ๋ง์ด ๋์์ผ ํ๋ค.
- ์ฌ๊ธฐ์ ๊ณฑํ๋ ์ง์๋ฅผ ์ด์ง์๋ก ๋ฐ๊พผ๋ค๋ฉด, O(n)์ O(log(n))์ผ๋ก ๋ฐ๊ฟ ์ ์๋ค.
- ๋ง์ฝ ์์๊ฐ 5์ด ๋ค์ด์๋ค๊ณ ํ์. ์ฐ๋ฆฌ๋ 5๋ฒ๋ง ๋ํ๋ฉด ๋๋ค.
- ์ด ์ซ์๋ ์ด์ง์๋ก ์ด๋ค. ๋ค์์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ์ ๋ 5๋ฒ ๋ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋์ง ํ์ธํด๋ณด์.
- ๊ฐ์ฅ ๋๋ถํฐ ์ฝ์ด๋ณด์.
- 1 (1*1)
- ๋ํ๊ณ ์ถ์ ์ซ์๋ฅผ ํ๋ฒ๋ง ๋ํด ๊ฒฐ๊ณผ์ ๋ฃ๋๋ค. (result = G)
- ๋ค์ ์๋ฆฌ์๋ฅผ ์ํด ๋ํ ์ซ์๋ฅผ 2๋ฐฐ ํ๋ค. (๋ํ๊ธฐ) (addNumber = 2G)
- 0 (11 + 20)
- ๋ํ๋ฉด ์๋๋ฏ๋ก ๊ฒฐ๊ณผ์ ๋ํ์ง ์๋๋ค. (result = G)
- ๋ค์ ์๋ฆฌ์๋ฅผ ์ํด ๋ํ ์ซ์๋ฅผ 2๋ฐฐ ํ๋ค. (๋ํ๊ธฐ) (addNumber = 4G)
- 1 (11 + 20 + 4*1)
- ๋ํ๊ณ ์ถ์ ์ซ์๋ฅผ ํ๋ฒ๋ง ๋ํด ๊ฒฐ๊ณผ์ ๋ฃ๋๋ค. (result = 5G)
- ๋ค์ ์๋ฆฌ์๋ฅผ ์ํด ๋ํ ์ซ์๋ฅผ 2๋ฐฐ ํ๋ค. (๋ํ๊ธฐ) (addNumber = 8G)
- ๋ค์ ์๋ฆฌ์๊ฐ ์์ผ๋ฏ๋ก ์ข ๋ฃํ๋ค.
- ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
- 1 (1*1)
- ์๋ ๊ฐ์ผ๋ฉด 5๋ฒ ๋ฃจํ ๋๊ฒ์ 3๋ฒ์ ๋๋๋ค.