๋ชฉ๋ก๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (79)
๐ฉ๐ป๐พ

Branch and Bound - Backtraking๊ณผ ๊ฐ์ด state-space tree๋ฅผ ์ฌ์ฉํ๋ค. - ํธ๋ฆฌ๋ฅผ ํ์ํ๋ ๋ฐฉ์์ ์ ํ์ ๋์ง ์๋๋ค. - ์ค์ง ์ต์ ํ ๋ฌธ์ ์๋ง ์ฌ์ฉ๋๋ค. BFS์ Best-First Search๋ฅผ ์ฌ์ฉํด์ ํ์์ ์งํํ๋๋ฐ ์ด๋ฒ ํฌ์คํ ์์๋ Best-First Search๋ก 0-1 Knapsack Problem์ ํด๊ฒฐํ๋ ๋ฐฉ์์ ๋ํด ์์ฑํ๋๋ก ํ๊ฒ ์ต๋๋ค. 0-1 Knapsack Problem using Best-First Search Basic Idea - ๋ ธ๋๊ฐ promisingํ์ง๋ก ๊ฒฐ์ ํ๊ธฐ๋ณด๋ค๋ bound๋ฅผ ์ฌ์ฉํด์ ๋ค์์ผ๋ก ํ์ฅํ ๋ ธ๋๋ฅผ ์ ํ - ๋ ธ๋์ bound๋ก ์ฐ์ ์์๊ฐ ์ ํด์ง๋ priority queue๋ฅผ ์ฌ์ฉ 1. item์ ๋ชจ๋ ๋ฃ์ง ์์์ ๋, b..

Backtracking ํด๋ฅผ ์ฐพ๋ ๋์ค ๋งํ๋ฉด ์ด์ ๋จ๊ณ๋ก ๋์๊ฐ์ ํด๋ฅผ ์ฐพ์๊ฐ๋ ๊ธฐ๋ฒ Backtracking์ ์ฌ์ฉํ๋ 3๊ฐ์ง ์์๋ฅผ ๋ณด์. 1. N-queens problem - N x N ํฌ๊ธฐ์ ์ฒด์ค๋ณด๋ํ์ N๊ฐ์ ํธ๋ค์ ์๋ก ์ํํ์ง ์๊ฒ ๋ฐฐ์นํ๋ ๋ฌธ์ 4 queens problem์ผ ๋ 16๊ฐ์ ์๋ฆฌ ์ค 4์๋ฆฌ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ : C(16, 4) = 1820 ๋ ํธ์ด ๊ฐ์ ํ, ์ด ๋๋ ๋๊ฐ์ ์ ์์นํ ์ ์์ผ๋ฏ๋ก ๋ฐฐ์ ํ ์ ์๋ ๊ฒฝ์ฐ : 4 x 4 x 4 x 4 = 256 : iํ j์ด์ ํธ์ด ์์น ์ฒ์ ์์ํ ๋์, ์๋ง ํธ์ด ์์นํ ๋ -> ํ์ ๋ ธ๋์์ ๋ต์ ๋ฐ๊ฒฌํ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฏ๋ก promising , , ์ ํธ๋ค์ด ์์นํ ๋, ๊ฐ์ ์ด์ ์์นํ๋ฏ๋ก ๋ต์ด ๋ ์ ์์ผ๋ฏ๋ก nonpromisi..

Greedy Algorithm -๋งค ์๊ฐ ๊ฐ์ฅ ์ข์๋ณด์ด๋ ๊ฒ์ ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ General Greedy Approach - ๋น ์งํฉ์ผ๋ก ์์ํ์ฌ ์งํฉ ์ธ์คํด์ค์ ๋ํ ๋ต์ ๋ํ๋ผ ๋๊น์ง ์งํฉ์ ์์ดํ ์ ์์๋๋ก ์ถ๊ฐ ์ ํ ์ ์ฐจ ( = Selection Procedure) ๊ทธ๋ฆฌ๋ ๊ธฐ์ค์ ๋ฐ๋ผ ์งํฉ์ ์ถ๊ฐํ ๋ค์ ์์ดํ ์ ์ ํ ํ๋น์ฑ ํ์ธ ( = Feasibility Check) ์ธ์คํด์ค์ ๋ต์ ์ ๊ณตํ๋ ๋ฐฉ์์ผ๋ก ์งํฉ์ ์๋ฃํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธ ๋ต ํ์ธ ( = Solution Check) ์ ์งํฉ์ด ์ธ์คํด์ค์ ๋ํ ๋ต์ ๊ตฌ์ฑํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ Minimum Spanning Trees ์ ์ Undirected Graph Connected Graph Acyclic Graph Tree Spanning Tree..

Dynamic Programming์ด๋?์ต์ ํ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํ ์ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ. ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋๋๊ณ , ์ค๋ณต๋๋ ๋ถ๋ถ ๋ฌธ์ ์ ํด๋ฅผ ์ ์ฅํ์ฌ ์ค๋ณต ๊ณ์ฐ์ ํผํ ์ ์๊ณ , ์์ ๋ถ๋ถ ๋ฌธ์ ์ ํด๋ฅผ ์กฐํฉํ์ฌ ์ ์ฒด ๋ฌธ์ ์ ํด๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ(=Bottom-Up) 4๊ฐ์ง์ ์์๋ฅผ ํตํด Dynamic Programming์ ๋ํด ์์ธํ ์์๋ณด์.1. The Binomial CoefficientC(n, k) = C(n-1, k) + C(n-1, k-1) for 0

ํฌ์คํ ์ ํ๊ธฐ์ ์์ ์ฌ๋ด ํ๋๋ฅผ ์๊ธฐํ์๋ฉด,๋๋ณด๊ธฐ์ธํ๋ฐ์ ๋ฆฌ์กํธ ๊ฐ์๋ค์ด ๊ฝค ๋ง๊ณ ๊ฐ๊ฐ์ ๊ฐ์๋ค์ ํด๋น ๊ฐ์๋ฅผ ์๊ฐํ๋ฉด ์ต์ 1๊ฐ์์ ๋ง๊ฒ๋ 4-5๊ฐ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์๊ฐ ์๋ค. ๋ด๊ฐ ์๊ฐ ์ค์ธ ๋ฆฌ์กํธ ๊ฐ์๋ '๊ฐ์ ์ผ๊ธฐ์ฅ' ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ์ ์๋๋ฐ ์๋ง์ ๊ฐ์๋ค ์ค ๋ด๊ฐ ์ด ๊ฐ์๋ฅผ ์ ํํ ์ด์ ๊ฐ ์ข ํฉ๋นํ๋ค.๋ํ๊ต 1ํ๋ ๋๊ฐ ์ฑ์คํ ์ด ์ธ๊ธฐ ์ ๋ฃ ์ฑ์ 'MOODA'๋ ๊ฐ์ ์ ๊ธฐ๋กํด์ ์ผ๊ธฐ๋ฅผ ์์ฑํ ์ ์๋ ์ฑ์ด ์์๋ค. ์ฑ ์์ด์ฝ๊ณผ ์์ธ ํ๋ฉด ์ฌ์ง์ ๋ดค์ ๋, UI๊ฐ ์๋นํ ์๊ธฐ์๊ธฐ(์๊ธฐ์๊ธฐํ ๊ฑฐ์ ๋ง์์ด ์ฝํ ํธ)ํ์ฌ ๊ตฌ๋งคํ๊ฒ ๋์๊ณ 2๋ ๋์์ ๊ฝค ์ ์ฌ์ฉํ ๊ฑฐ ๊ฐ๋ค.์ฌํผ, ๊ทธ๋์ ์กธ์ ์ํ์์ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ผ์ ์ฒ์ ์ฌ์ฉํด๋ณด๋ ํฐ๋ผ ๋ฆฌ์กํธ ๊ฐ์๋ฅผ ์ฐพ์๋ณด๊ณ ์์๊ณ , ํด๋น ๊ฐ์๋ฅผ ๋ฐ๊ฒฌํ๊ฒ ..

์๋ฐ ์คํฌ๋ฆฝํธ๋ ์ฝ๋๊ฐ ์์ฑ๋ ์์๋๋ก ์์ ์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ด์ ์์ ์ด ์งํ ์ค์ผ ๋๋ ๋ค์ ์์ ์ ์ํํ์ง ์๊ณ ๊ธฐ๋ค๋ฆฐ๋ค. (= ์ฆ, ๋จผ์ ์์ฑ๋ ์ฝ๋๋ฅผ ๋จผ์ ๋ค ์คํํ๊ณ ๋ ๋ค, ๊ทธ ๋ค์ ์์ฑ๋ ์ฝ๋๋ฅผ ์คํํจ) โก๏ธ ๋๊ธฐ ๋ฐฉ์์ ์ฒ๋ฆฌ ์ด๋ฐ ๋๊ธฐ์ ์ฒ๋ฆฌ์ ๋จ์ ์ ์ ์ฌ์ง์ taskB์ฒ๋ผ ํ๋์ ์์ ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ, ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ด ์ข ๋ฃ๋๊ธฐ ์ ๊น์ง ๋ชจ๋ ์์ ์ด ์ฌ์คํ ๋๊ธฐ ๋๋ฌธ์ ์ ๋ฐ์ ์ธ ์์ ์ ํ๋ฆ์ด ๋๋ ค์ง๋ค๋ ์ ์ด ์๋ค. โก๏ธ ๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ ๋ฌธ์ ์ ๊ทธ๋ ๋ค๋ฉด ์ฝ๋๋ฅผ ์คํํ๋ ์ผ๊พผ Thread๋ฅผ ์ฌ๋ฌ๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ์์ธ 'MultiThread' ๋ฐฉ์์ผ๋ก ์๋์ํค๋ฉด ์ ์ฌ์ง์ฒ๋ผ ์์ ๋ถํ ์ด ๊ฐ๋ฅํ๋๊น ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ด ์์ด๋ ๋ค๋ฅธ ์ผ๊พผ Thread์๊ฒ ์์ ์ ์ง์ํ๋ฉด ๋๋๊น ๊ด์ฐฎ์ง ์..

1๏ธโฃ ๋ฌธ์ ์ค๋ช ์์ง์ ์์ N๊ฐ์ ์ขํ X1, X2, ..., XN์ด ์๋ค. ์ด ์ขํ์ ์ขํ ์์ถ์ ์ ์ฉํ๋ ค๊ณ ํ๋ค. Xi๋ฅผ ์ขํ ์์ถํ ๊ฒฐ๊ณผ X'i์ ๊ฐ์ Xi > Xj๋ฅผ ๋ง์กฑํ๋ ์๋ก ๋ค๋ฅธ ์ขํ์ ๊ฐ์์ ๊ฐ์์ผ ํ๋ค. X1, X2, ..., XN์ ์ขํ ์์ถ์ ์ ์ฉํ ๊ฒฐ๊ณผ X'1, X'2, ..., X'N๋ฅผ ์ถ๋ ฅํด๋ณด์. 2๏ธโฃ ์ ๋ ฅ ์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ๊ณต๋ฐฑ ํ ์นธ์ผ๋ก ๊ตฌ๋ถ๋ X1, X2, ..., XN์ด ์ฃผ์ด์ง๋ค. 3๏ธโฃ ์ถ๋ ฅ ์ฒซ์งธ ์ค์ X'1, X'2, ..., X'N์ ๊ณต๋ฐฑ ํ ์นธ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํ๋ค. ๐ฉ๐ป๐ป ์์ฑํ ์ฝ๋ import sys import heapq input = sys.stdin.readline n = int(input()) pos = list(map(i..

1๏ธโฃ ํ์ ์ฐฝ ํ์ํ๊ธฐ alert(๋ด์ฉ)// ์๋ฆผ์ฐฝ ํ์ confirm(๋ด์ฉ)// ํ์ธ์ฐฝ ํ์ โฌ ๏ธ [ํ์ธ] ๋ฒํผ๊ณผ [์ทจ์] ๋ฒํผ์ด ์์ด์ ์ฌ์ฉ์๊ฐ ์ด๋ค ๋ฒํผ์ ํด๋ฆญํ๋๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ ๊ฐ๋ฅ โฌ ๏ธ ํ์ธ ๋ฒํผ ๋๋ฅด๋ฉด ์ฌ์ง์ฒ๋ผ true ๋ฐํ, ์ทจ์ ๋ฒํผ ๋๋ฅด๋ฉด false ๋ฐํ prompt(๋ด์ฉ)// ์ฌ์ฉ์๊ฐ ๊ฐ๋จํ ๊ฐ์ ์ ๋ ฅํ ์ ์๋ ์ฐฝ โฌ ๏ธ ์ ๋ ฅ๊ฐ ๋ฐํ prompt(๋ด์ฉ, ๊ธฐ๋ณธ๊ฐ)// ๊ธฐ๋ณธ๊ฐ ์ง์ ๊ฐ๋ฅ 2๏ธโฃ ์ฝ์์ฐฝ์ ๋ด์ฉ ํ์ console.log(๋ด์ฉ)// ์ฝ์ ์ฐฝ์ ๊ฒฐ๊ณผ ํ์ 3๏ธโฃ ์น ๋ธ๋ผ์ฐ์ ์ฐฝ์ ๋ด์ฉ ํ์ํ๊ธฐ document.write()// ์น ๋ธ๋ผ์ฐ์ ์ฐฝ์ ๊ฒฐ๊ณผ ํ์, DOM์ ์ด์ฉํด์ ์ํ๋ ์์น ์ง์

์ด ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ฒ์์ผ๋ก ๋ด์ฅํจ์ enumerate()๋ฅผ ์ฌ์ฉํด๋ด์ ๊ฐ๋ ์ ๋ฆฌ๋ฅผ ์ํด ํฌ์คํ ํ๊ฒ ๋๋ค. โ enumerate() ํจ์๋? ๋ฆฌ์คํธ์ ์์์ ์์๊ฐ์ ๋ถ์ฌํด์ฃผ๋ ํจ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ฑ์ค์ ์์๋ก ์ด๋ฃจ์ด์ง ํํ(tuple)๋ก ๋ง๋ค์ด์ค๋ค -> ์์ ์ฝ๋๋ก ํ์ธํด๋ณด์ nums = ["apple", "banana", "pear","strawberry","grape"] for i in enumerate(nums): print(i) ์ ์ฝ๋๋ฅผ ์คํ ์, ์๋์ ๊ฐ์ด ์ธ๋ฑ์ค์ ์์๋ฅผ ํํ ํํ๋ก ์ถ๋ ฅํด์ค๋ค. ์ด๋, ์ธ๋ฑ์ค์ ์์๋ฅผ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ณ์์ ํ ๋นํ๊ณ ์ถ๋ค๋ฉด ์๋ ์ฝ๋์ ๊ฐ์ด ์ธํฉํน์ ํด์ฃผ๋ฉด ๋๋ค. nums = ["apple", "banana", "pear","strawberry","grape"] ..

ํ๋ก๊ทธ๋๋จธ์ค์์ ํด๋น ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ swapcase()๋ ๋ด์ฅํจ์๋ฅผ ์ฒ์ ์๊ฒ ๋ผ์, ๋์๋ฌธ์ ๊ด๋ จ ๋ด์ฅํจ์๋ฅผ ์ ๋ฆฌํ๊ณ ์ ํด๋น ๋ฌธ์ ํ์ด๋ฅผ ํฌ์คํ ํ๊ฒ ๋๋ค. โ ๋์๋ฌธ์ ๊ด๋ จ ๋ด์ฅํจ์ upper() ๋ฌธ์์ด์ ๋ชจ๋ ๋๋ฌธ์๋ก ๋ณํ lower() ๋ฌธ์์ด์ ๋ชจ๋ ๋๋ฌธ์๋ก ๋ณํ isupper() ํด๋น ๋ฌธ์๊ฐ ๋ชจ๋ ๋๋ฌธ์์ธ์ง ํ์ธํ์ฌ booleanํ์ผ๋ก ๊ฒฐ๊ณผ ๋ฐํ islower() ํด๋น ๋ฌธ์๊ฐ ๋ชจ๋ ์๋ฌธ์์ธ์ง ํ์ธํ์ฌ booleanํ์ผ๋ก ๊ฒฐ๊ณผ ๋ฐํ swapcase() ๋๋ฌธ์๋ ์๋ฌธ์๋ก, ์๋ฌธ์๋ ๋๋ฌธ์๋ก ๋ณํ ๐ก์์ ์ฝ๋ str1 = "StudyIng PyThoN" str2 = "it is all lower" print('case1', str1.upper()) print('case2', str1.lower()) p..