SimpleSunDragon
์๊ฒฝ๋ํ๊ต 2023 ์ปดํจํฐ๊ณตํ๊ณผ ์ฌ๋ฆํน๊ฐ ๊ณผ์ ๋ก ๋ง๋ ๊ฐ๋จํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
๊ฐ๋ฐ ์ธ์ด: python
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด๋ถ์๋ 4๊ฐ์ ์ฝ๋๊ฐ ์๋ค.
1. ์ต๋๊ณต์ฝ์(gcd) ๊ฒฐ๊ณผ๊ฐ๋ง ๋์ค๋ ์ฝ๋ 2. ์ต๋๊ณต์ฝ์(gcd) ํ์ด๋ ๋์ค๋ ์ฝ๋ 3. ๊ณฑ์ ์ญ์์ ์์ ๊ตฌํ๋ ์ฝ๋ 4. ์๋ฌธ์๋ฅผ a๋ถํฐ 0๋ก ๋ฐ๊พธ๋ ์ฝ๋
1, 2๋ฒ: gcd ์ฝ๋
๋ง ๊ทธ๋๋ก ์ต๋ ๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ์ฝ๋์ด๋ค.
3๋ฒ: ๊ณฑ์ ์ญ์ ๊ตฌํ๋ ์ฝ๋
์ญ์์ ์ด๋ค 'a'์ ๋ํด์ ๋ค๋ฅธ ์ 'b'์์ ๊ณฑ์ ํตํด 1์ ์ป์ ์ ์๋ ์์ด๋ค. ์ฆ '(a * b) mod m = 1'์ ๋ง์กฑํ๋ ์ 'b'๋ฅผ ์ฐพ๋ ๊ฒ์ด๋ค.
๊ณฑ์
์ญ์์ ๊ตฌํ ๋ ์ฐพ์ผ๋ ค๋ ๊ฐ(a)์ 1๋ถํฐ a-1๊น์ง gcd๊ฐ 1์ด ๋๋ ๊ฐ๋ค๋ค ๊ตฌํ๋ฉด ๋๋ค.
์์ ๋ง์ ํ์ด์ ์ฝ๋๋ก ์ ์ด๋ณด๋ฉด ์๋์ ๊ฐ์ด ๋๋ค.
for i range(a): # a-1๊น์ง
if (i == 0):
continue
else:
gcd(gcd(a, i==1)): # gcd๊ฐ 1์ด๋ฉด
list.append(i) # list์ ๋ฃ๊ธฐ
์ฌ๊ธฐ์ ๊ตฌํ ๊ฐ์ ํตํด ์ญ์์ ์๋ ์ฝ๊ฒ ๊ตฌํ ์ ์๋ค.
4. ์๋ฌธ์๋ฅผ ์ซ์์ ๋์ ํ์ฌ ๋ฐ๊พธ๋ ํจ์ ์ปดํจํฐ๊ฐ ๋ฌธ์๋ฅผ ์ ์ฅํ ๋์๋ ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ํ์์ผ๋ก ์ ์ฅํ๋ค.
a์ ์ ๋์ฝ๋๋ 97์ด๋ฏ๋ก 'ord(a)-97'์ ํ๊ฒ ๋๋ฉด a๋ 0์ด๋๊ณ , b๋ 1์ด๋๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์๋ฌธ์๋ฅผ 0๋ถํฐ ์ซ์์ ๋์ ์์ผ์ค๋ค.
์ด๋ฅผ ํตํด hill ํจ์๋ฅผ ๊ตฌํ ๋ ์๋ฌธ์๋ฅผ ์ซ์๋ก ๋์ ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด ์ฃผ์๋ค.
์ฝ๋๋ฅด ๋ผ์ด๋ธ๋ฌ๋ฆฌํ ํด์ฃผ๊ธฐ ์ํด PYPI ์ฌ์ดํธ๋ฅผ ํตํด ์ฝ๋๋ฅผ ์ฌ๋ ธ๋ค. https://pypi.org/project/simplesundragon
๊ทธ๋ฐ๋ฐ pip install์ ๋๋๋ฐ python์์ import๊ฐ ์๋๋ค.
๋ด๊ฐ ๊ตฌํํ ํ์ด์ฌ ์ฝ๋๋ simplesundragon ํ์ผ ๋ด๋ถ์ ์์ผ๋ ํ์ด์ฌ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ํ์ผ ๋ด๋ถ์ ์ฝ๋๋ง ๋ค์ด๋ฐ์ ์ฌ์ฉํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
- ์ฝ๋๋ฅผ ๋ฐ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
1. simplesundragon.py๋ฅผ ๋ค์ด๋ฐ๋๋ค
2. ํ์ํ ํ์ด์ฌ ํ์ผ ๋ด๋ถ์ ๋ฃ๋๋ค.
3. import simplesundragon as dragon
4. ๋ด๋ถ์ ์๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ค.
ex.
1.gcd 2.simple_gcd 3.multiply_inverse 4.hill_num