๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?

Problem Solving/ALGORITHM7

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด (์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ) #์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด (์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ) #์†Œ์ˆ˜ - 1๊ณผ ์ž๊ธฐ ์ž์‹ ๋งŒ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ์ˆ˜ #์ž…๋ ฅ ๋ฐ›์€ ํ›„ ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ์ถœ๋ ฅ! #ํžŒํŠธ 2๋ถ€ํ„ฐ ์ž๊ธฐ์ž์‹  -1 ๊นŒ์ง€ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด ์•ˆ๋จ #์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์•„ ์†Œ์ˆ˜์ธ์ง€ ํŒ๋ณ„ํ•˜์‹œ์˜ค. #๋‚ด ์ฝ”๋“œ n = int(input()) for i in range(2,n): if n%i ==0: print('์†Œ์ˆ˜ ์•ˆ๋จ') break else: print('์†Œ์ˆ˜ ๋จ') #์ž…๋ ฅ 50 #์ถœ๋ ฅ 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 #์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด (์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ) #์†Œ์ˆ˜ - 1๊ณผ ์ž๊ธฐ ์ž์‹ ๋งŒ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ์ˆ˜ #์ž…๋ ฅ ๋ฐ›์€ ํ›„ ์ž…๋ ฅ๋ฐ›์€ ๋ฒ”์œ„๊นŒ์ง€์˜ ์†Œ์ˆ˜๋ฅผ ์ฐพ๊ธฐ a = int(input()) answer=[] check=[.. 2022. 6. 1.
์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• (์ตœ๋Œ€๊ณต์•ฝ์ˆ˜), ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• ์˜๋ฏธ: ์ตœ์ดˆ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•(-ไบ’้™คๆณ•, Euclidean algorithm) ๋˜๋Š” ์œ ํด๋ฆฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 2๊ฐœ์˜ ์ž์—ฐ์ˆ˜ ๋˜๋Š” ์ •์‹(ๆ•ดๅผ)์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•˜๋‚˜์ด๋‹ค. (์ถœ์ฒ˜:wikipedia) ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ 1. a,b ๊ฐ๊ฐ์˜ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•ด ๊ณตํ†ต๋˜๋Š” ์•ฝ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’ ์ฐพ๊ธฐ 2. ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• ์ˆซ์ž a,b๊ฐ€ ์กด์žฌํ•  ๋•Œ, a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€์™€ b์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋Š” a์™€ b์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ ๊ฐ™์Œ. ๋”ฐ๋ผ์„œ, ๊ณ„์†ํ•ด์„œ a๋ฅผ b๋กœ ๋‚˜๋ˆ„์–ด b๋ฅผ a์—, ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ b์— ๋Œ€์ž…์‹œ์ผœ b๊ฐ€ 0์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉด ๋‚จ๋Š” a๊ฐ’์ด ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๊ฐ€ ๋œ๋‹ค! def gcd(a,b): while b>0: a,b = b,a%b return a ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜ a,b์˜ ๋ฐฐ์ˆ˜์ค‘์—์„œ ๊ณตํ†ต.. 2022. 6. 1.
deque deque ๋ฐํฌ(deque)์˜ ๊ฐœ๋… - ๋ณดํ†ต์˜ ํ(queue)๋Š” ์„ ์ž…์„ ์ถœ(FIFO)๋กœ ์ž‘๋™ - deque๋Š” ์–‘๋ฐฉํ–ฅํ! - ์•ž, ๋’ค ์–‘์ชฝ ๋ฐฉํ–ฅ์—์„œ element๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ ๊ฐ€๋Šฅ - ๋ฐํฌ๋Š” ์–‘ ๋ element์˜ append์™€ pop์ด ์••๋„์ ์œผ๋กœ ๋น ๋ฆ„ - ์ปจํ…Œ์ด๋„ˆ์˜ ์–‘๋ element์— ์ ‘๊ทผํ•ด ์‚ฝ์ž… ๋˜๋Š” ์ œ๊ฑฐ๋ฅผ ํ•  ๊ฒฝ์šฐ, ์ผ๋ฐ˜์ ์ธ ๋ฆฌ์ŠคํŠธ(list)๊ฐ€ ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์— O(n)์ด ์†Œ์š”๋˜๋Š”๋ฐ ๋ฐ˜ํ•ด, ๋ฐํฌ(deque)๋Š” O(1)๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ ๋ฐํฌ(deque) ์‚ฌ์šฉ๋ฒ• - deque๋Š” importํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค! from collectinos import deque deq = deque() #item์„ ๋ฐํฌ์˜ ์™ผ์ชฝ ๋์— ์‚ฝ์ž… deq.appendleft(item) #item์„ ๋ฐํฌ์˜ ์˜ค๋ฅธ์ชฝ ๋์— ์‚ฝ์ž… deq.ap.. 2022. 5. 31.
๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm) ๊ทธ๋ฆฌ๋””(Greedy) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐ŸŽˆ๊ฐœ๋… - ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ์—ฌ๋Ÿฌ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•  ๋•Œ ๊ทธ ์ˆœ๊ฐ„์— ์ตœ์ ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ๊ฒƒ์„ ์„ ํƒํ•ด ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์—ฌ ์ตœ์ข…์ ์ธ ํ•ด๋‹ต์— ๋„๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ• - ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ตœ์  ํ•ด๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ทผ์‹œ์•ˆ์ ์ธ ๋ฐฉ๋ฒ• - ๊ฐ ์„ ํƒ์˜ ์‹œ์ ์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒฐ์ •์€ ์ง€์—ญ์ ์œผ๋กœ๋Š” ์ตœ์ ์ด์ง€๋งŒ, ๊ทธ ์„ ํƒ๋“ค์„ ํ†ตํ•ด ์ตœ์ข…์ ์ธ ํ•ด๋‹ต์„ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•ด์„œ ๊ทธ๊ฒƒ์ด ์ตœ์ ์ด๋ผ๋Š” ๋ณด์žฅ์ด ์—†๋Š” ๊ณ„ํš๋ฒ• ๐ŸŽˆ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์กฐ๊ฑด ํƒ์š•์Šค๋Ÿฌ์šด ์„ ํƒ ์กฐ๊ฑด - ํƒ์š•์ ์ธ ์„ ํƒ์€ ํ•ญ์ƒ ์•ˆ์ „ํ•˜๋‹ค๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋˜์–ด์•ผ ํ•จ. "์•ˆ์ „ํ•˜๋‹ค"๋ผ๋Š” ์˜๋ฏธ๋Š” ์ด ์„ ํƒ์œผ๋กœ ์ธํ•ด ์ „์ฒด ๋ฌธ์ œ์˜ ์ตœ์ ํ•ด๋ฅผ ๋ฐ˜๋“œ์‹œ ๋„์ถœํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ. ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด ๊ฒฐ๊ณผ ๋„์ถœ ์‹œ ์ตœ์ ํ•ด๊ฐ€ ๋ฌด์กฐ๊ฑด ๋‚˜์˜ค๋‚˜? - ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜.. 2022. 5. 13.
์ˆœ์—ด/๊ฐ€์ง€์น˜๊ธฐ #back tracking #์ฒ˜์Œ์— 2๊ฐ€ ๋‚˜์˜ค๋ฉด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ ๋งŒ๋“ค๊ธฐ n = int(input()) arr = [1,2,3,4,5,6] path=['']*n used=[0]*6 def abc(level): if path[0] == 2: return #back tracking if level == n: for i in range(n): print(path[i],end=' ') print() return for i in range(6): # if level == 0 and arr[i] == 2: # continue path[level] = arr[i] abc(level+1) path[level]=0 abc(0)โ€‹ #back tracking n = int(input()) arr = [1,2,3,4,5,6] pa.. 2022. 3. 15.
๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ (์™„์ „ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜) ๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ Brute(๋ฌด์‹ํ•œ) + Force(ํž˜) ๋ธŒ๋ฃจํŠธ ํฌ์Šค๋Š” ์™„์ „ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์กฐ๊ฑด์— ์ถฉ์กฑ๋˜๋Š” ๊ฒฐ๊ณผ๋งŒ์„ ๊ฐ€์ ธ์˜ด! ๋ฌด์‹ํ•˜๊ฒŒ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 100% ํ™•๋ฅ ๋กœ ์ •๋‹ต์„ ์ถœ๋ ฅ. ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•ด๊ฐ€ ์กด์žฌํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋ฒ”์œ„๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์„ค๊ณ„์‹œ 'ํ•ด๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์กด์žฌํ•œ๋‹ค'๋Š” ๊ฐ€์ •์„ ์„ธ์šฐ๊ณ  ๋ชจ๋“  ๋ฒ”์œ„๋ฅผ ํƒ์ƒ‰! but, ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ! ๋ธŒ๋ฃจํŠธ ํฌ์Šค์˜ ์ข…๋ฅ˜ ์„ ํ˜•๊ตฌ์กฐ ์ˆœ์ฐจํƒ์ƒ‰ ๋น„์„ ํ˜•๊ตฌ์กฐ BFS(๋„“์ด ์šฐ์„  ํƒ์ƒ‰),DFS(๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰) ์ˆœ์ฐจํƒ์ƒ‰ 1) ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ๊ตฌ์กฐํ™” 2) ๊ตฌ์กฐํ™”๋œ ๊ณต๊ฐ„์„ ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๋ฅผ ์ฐพ์„ ๋•Œ ๊นŒ์ง€ ํƒ์ƒ‰ BFS,DFS ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ๊ทธ๋ž˜ํ”„๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•! ๊ทธ๋ž˜ํ”„๋ž€? node(์ •์ )๊ณผ ๊ทธ ์ •์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ed.. 2022. 3. 11.
DAT, Count Sorting # practice 1 a = [4, 9, 1, 4, 4, 2] b = [1, 3, 4, 2, 5, 6, 7, 8, 9] for i in range(len(b)): c = 0 for j in range(len(a)): if a[j] == b[i]: c = 1 break if c == 1: print('O',end=' ') else: print('X',end=' ') # practice 2 -DAT a = [4, 9, 1, 4, 4, 2] b = [1, 3, 4, 2, 5, 6, 7, 8, 9] bucket = [0]*20 # O,X๋ฅผ ๋‹ด์„ ๋ฐ”๊ตฌ๋‹ˆ for i in range(len(a)): # a์— ์žˆ๋Š” ์• ๋“ค์„ ๋จผ์ € ๋ฐ”๊ตฌ๋‹ˆ์— ์ฒดํฌ ํ•ด์ฃผ๊ธฐ index = a[i] # ์—ฌ๊ธฐ์˜ index๋Š” ๋ฐ”๊ตฌ๋‹ˆ์˜ index ๋ฒˆ.. 2022. 2. 10.