๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์‹ค์Šต - [2] ์žฌ๊ท€ ์‹ค์Šต๋ฌธ์ œ - ํ•˜๋…ธ์ดํƒ‘ (2) ์žฌ๊ท€๋ฌธ์ œ ์ค‘ 'ํ•˜๋…ธ์ด์˜ ํƒ‘' ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ๋งจ ์ฒ˜์Œ์—๋Š” ํ•˜๋…ธ์ด์˜ ํƒ‘์„ ์žฌ๊ท€๋กœ ํ‘ผ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์–ด๋А ๋ถ€๋ถ„์—์„œ ์žฌ๊ท€๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด์ž. ๊ทœ์น™ ์ฐพ๊ธฐ ๋จผ์ € ํ•˜๋…ธ์ด์˜ ํƒ‘์—๋Š” ๊ทœ์น™์ด ์กด์žฌํ•œ๋‹ค. 1. ํ•œ ๋ฒˆ์— ํ•œ๊ฐœ์˜ ์›ํŒ๋งŒ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค. 2. ํฐ ์›ํŒ์ด ์ž‘์€ ์›ํŒ ์œ„์— ์žˆ์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. ๋จผ์ € ์›ํŒ์ด 1๊ฐœ์ธ ๊ฒฝ์šฐ๋ถ€ํ„ฐ ์ƒ๊ฐํ•ด๋ณด์ž. ์›ํŒ์ด 1๊ฐœ์ธ ๊ฒฝ์šฐ ๋‹จ์ˆœํ•˜๊ฒŒ A์—์„œ C๋กœ ์˜ฎ๊ฒจ์ฃผ๋ฉด ๋œ๋‹ค. ๋ฒ ์ด์Šค ์ผ€์ด์Šค๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค! ๊ทธ๋Ÿผ ์›ํŒ์ด ๋‘๊ฐœ์ธ ๊ฒฝ์šฐ๋ฅผ ๋ณด์ž. ์›ํŒ์ด ๋‘๊ฐœ์ธ ๊ฒฝ์šฐ, ํฐ ์›ํŒ์ด C์— ๋จผ์ € ๊น”๋ ค์•ผ ์ž‘์€ ์›ํŒ์ด ๊ทธ ์œ„์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € ํฐ ์›ํŒ์„ C๋กœ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด ์ž‘์€ ์›ํŒ์„ B๋กœ ์˜ฎ๊ธด๋‹ค. ์ดํ›„ ํฐ ์›ํŒ์„ C๋กœ ์˜ฎ๊ธด๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ž‘์€ ์›ํŒ์„ B์—์„œ C๋กœ ์˜ฎ๊ธด๋‹ค. ๊ทธ๋Ÿผ ์›ํŒ 3๊ฐœ์ธ ๊ฒฝ์šฐ๋„..
์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์‹ค์Šต - [2] ์žฌ๊ท€ (1) ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์‹ ์„ ์‚ฌ์šฉํ•ด ์ •์˜๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์ž๊ธฐ ์ž์‹ ์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์•ˆ์—์„œ ๊ณ„์† ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ณ„์†ํ•ด์„œ ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์นซํ•˜๋ฉด ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ๋Œ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ์—๋Š” ๋‘ ๊ฐ€์ง€ ์š”์†Œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์žฌ๊ท€ ์ผ€์ด์Šค (Recursion) : ์ฐจํ›„์˜ ์žฌ๊ท€ํ˜ธ์ถœ์€ ์ž‘์•„์ง„ ๋ถ€๋ฌธ์ œ๋“ค(subproblems)์„ ๋Œ€์ƒ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ๋ฒ ์ด์Šค ์ผ€์ด์Šค(base case): ๋ถ€๋ฌธ์ œ๋“ค์ด ์ถฉ๋ถ„ํžˆ ์ž‘์•„์ง€๋ฉด, ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ด๋“ค์„ ์ง์ ‘ ํ•ด๊ฒฐํ•œ๋‹ค ๋‹ค์‹œ ๋งํ•ด ์žฌ๊ท€ํ•จ์ˆ˜๋Š” ๋” ์ž‘์•„์ง€๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰๋˜์–ด์•ผ ํ•˜๊ณ  (๋ฒ ์ด์Šค ์ผ€์ด์Šค๋ฅผ ํ–ฅํ•ด ์ง„ํ–‰๋จ) ๋ฒ ์ด์Šค ์ผ€์ด์Šค์—์„œ๋Š” ๋” ์ด์ƒ ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•œ๋‹ค. ์žฌ๊ท€์˜ ์ž‘๋™์›..
์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์‹ค์Šต - [1] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„์„ ์‹ค์Šต๋ฌธ์ œ (๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ, ๋น„ํŠธํ–‰๋ ฌ์—์„œ ์ตœ๋Œ€ 1ํ–‰ ์ฐพ๊ธฐ, ๋ˆ„์  ํ‰๊ท ) (3) ๋ฌธ์ œ 1 - ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ ‘%’(modulo) ์—ฐ์‚ฐ์ž๋Š” ๋‚˜๋ˆ—์…ˆ์˜ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ง์…ˆ๊ณผ ๋บ„์…ˆ ์—ฐ์‚ฐ์ž๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” modulo(a, b) ํ•จ์ˆ˜์™€ ์ด๋ฅผ ํ…Œ์ŠคํŠธํ•  ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋‹จ, a ≥ 0, b > 0 ์ธ ์ •์ˆ˜๋‹ค. โ€ป ํžŒํŠธ: modulo(a, b) ํ•จ์ˆ˜๋Š” O(a/b) ์‹œ๊ฐ„์— ์‹คํ–‰ํ•˜๋„๋ก ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. #์ž…๋ ฅ ์˜ˆ์‹œ 1 >>> 17 3 // 17 % 3 2 #์ž…๋ ฅ ์˜ˆ์‹œ 2 >>> 6 3 // 6 % 3 0 #์ž…๋ ฅ ์˜ˆ์‹œ 3 >>> 0 5 // 0 0 def modulo(a,b): temp = True while temp: if a>=b: a=a-b else : temp = False print(a) a = int(input()) b = int(input()) mo..
์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์‹ค์Šต - [1] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„์„ (2) ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„์„์— ํ•„์š”ํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ๋“ค์„ ์ ์—ˆ๋‹ค. ์˜์‚ฌ ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ‘œํ˜„ํ•˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ, ์ „์— ๋ฐฐ์› ๋“ฏ์ด ์‚ฌ์šฉํ•˜๋Š” ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด์— ๊ด€๊ณ„์—†์ด ์‹คํ–‰์‹œ๊ฐ„์„ ์ถ”์ •ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ์ž„์˜์ ‘๊ทผ๊ธฐ๊ณ„ ๋ชจ๋ธ(Random Access Machine, RAM)์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ํ•˜๋‚˜์˜ ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜(CPU) ๋ฌด์ œํ•œ์˜ ๋ฉ”๋ชจ๋ฆฌ์…€ ์„ ์‚ฌ์šฉํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ ์…€๋“ค์€ ์ˆœ๋ฒˆ์œผ๋กœ ๋‚˜์—ด๋˜๋ฉฐ ์–ด๋–ค ์…€์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด๋ผ๋„ ๋™์ผํ•œ ์‹œ๊ฐ„ ๋‹จ์œ„(์ƒ์ˆ˜)๊ฐ€ ์†Œ์š”๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋˜ํ•œ ์›์‹œ ์ž‘์—…(Primitive Operations)์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅํฌ๊ธฐ์˜ ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์›์‹œ ์ž‘์—…์ด๋ž€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜ํ•ด ์ˆ˜ํ–‰๋˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๊ณ„์‚ฐ์„ ์˜๋ฏธํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฐ์ˆ ์‹/๋…ผ๋ฆฌ์‹์˜ ํ‰๊ฐ€ (EXP) ๋ณ€์ˆ˜์— ํŠน์ •๊ฐ’์„ ์น˜ํ™˜ (ASS) ๋ฐฐ..