Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Algorithm/Basic

[์•Œ๊ณ ๋ฆฌ์ฆ˜] (swift) ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• (feat. ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ)

๊ฐ์ž ๐Ÿฅ” 2022. 12. 25. 17:41
๋ฐ˜์‘ํ˜•

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜, ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด์„œ๋„, ๊ณ„์† for๋ฌธ์„ ๋Œ๋ฆฌ๊ณ ์žˆ๊ณ ,,, ์‹œ๊ฐ„๋‚ญ๋น„๋ฅผ ํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค. ์Šค์Šค๋กœ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ ์–ด๋‘๋Š” ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•! ๊ผญ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋„๋ก ํ•˜์ž

 

๐Ÿ”– ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• ์ด๋ž€? (feat. ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜)

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์€ ๋‘ ๊ฐœ์˜ ์ •์ˆ˜(์ž์—ฐ์ˆ˜) ์‚ฌ์ด์—์„œ์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
ํ˜ธ์ œ๋ฒ•์ด๋ž€ ๋ง์€ ๋‘ ์ˆ˜๊ฐ€ ์„œ๋กœ(ไบ’) ์ƒ๋Œ€๋ฐฉ ์ˆ˜๋ฅผ ๋‚˜๋ˆ„์–ด(้™ค)์„œ ๊ฒฐ๊ตญ ์›ํ•˜๋Š” ์ˆ˜๋ฅผ ์–ป๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

-wiki

 2๊ฐœ์˜ ์ž์—ฐ์ˆ˜(๋˜๋Š” ์ •์‹) a, b์— ๋Œ€ํ•ด์„œ a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ r์ด๋ผ ํ•˜๋ฉด (๋‹จ, a>b), a์™€ b์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” b์™€ r์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ๊ฐ™๋‹ค. ์ด ์„ฑ์งˆ์— ๋”ฐ๋ผ, b๋ฅผ r๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ r'๋ฅผ ๊ตฌํ•˜๊ณ , ๋‹ค์‹œ r์„ r'๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋˜์—ˆ์„ ๋•Œ ๋‚˜๋ˆ„๋Š” ์ˆ˜๊ฐ€ a์™€ b์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์ด๋‹ค.

์˜ˆ์‹œ๋กœ ์‚ดํŽด๋ณด์ž.

๐Ÿ’ฌ ์˜ˆ์‹œ๋กœ ์‚ดํŽด๋ณด๋Š” ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•

1071๊ณผ 1029์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด์ž.

  • 1071์€ 1029๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, 1071์„ 1029๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‚˜๋จธ์ง€ r ์€ 42๊ฐ€ ๋œ๋‹ค.
  • 1029๋Š” 42๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, 1029๋ฅผ 42๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ r' ๋Š” 21์ด ๋œ๋‹ค.
  • 42๋Š” 21๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง„๋‹ค. ๐Ÿ‘‰ ๋”ฐ๋ผ์„œ, ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” 21์ด๋‹ค.

 

๐Ÿ”– ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด๋ณด์ž. (swift)

์œ„์—์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€, ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

private func gcd(_ n: Int, _ m: Int) -> Int {
    return m == 0 ? n : gcd(m, n%m)
}
  • n์ด m๋ณด๋‹ค ํฌ๋‹ค๋Š” ์ „์ œ๊ฐ€ ์žˆ์–ด์•ผํ•œ๋‹ค.
  • (1071, 1029)๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด, 1071์—์„œ 1029๋ฅผ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ 42๊ฐ€ ๋‹ค์‹œ gcd์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๊ณ , ๋‹ค์‹œ 1029๊ฐ€ n์ž๋ฆฌ์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค. ์ฆ‰, (1029, 42)๊ฐ€ ๋˜๊ณ , ๋‹ค์‹œ (42, 21)์ด ๋œ๋‹ค. ์ด ๋‹ค์Œ๊ณผ์ •์€ (21, 0)์ธ๋ฐ, ์—ฌ๊ธฐ์„œ m ์ด 0์ด๋ฏ€๋กœ n์ธ 21์ด ์ถœ๋ ฅ๋˜๋Š” ๊ณผ์ •์ด๋‹ค.

 

๐Ÿ”– ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌํ• ๊นŒ

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ–ˆ๋‹ค๋ฉด, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” ๋งค์šฐ ์‰ฝ๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. 8๊ณผ 24 ๋‘ ๊ฐœ์˜ ์ˆ˜๋กœ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด์ž.  A์™€ B์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ a, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๊ฐ€ b๋ผ๊ณ  ํ•˜๋ฉด, A*B = a*b๋ผ๋Š” ๊ณต์‹์ด ์„ฑ๋ฆฝํ•œ๋‹ค. ์ด ๊ณต์‹์„ ํ™œ์šฉํ•ด์„œ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

๋ฐ˜์‘ํ˜•