์๋ฃ๊ตฌ์กฐ ๋ฐ ์ค์ต - [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) ๋ฐฐ.. ์ด์ 1 2 3 4 5 ๋ค์