Potato
μ•ˆλ…•ν•˜μ„Έμš”, κ°μž‘λ‹ˆλ‹€?πŸ₯” ^___^ 😺 github λ°”λ‘œκ°€κΈ° πŸ‘‰πŸ»
λ°˜μ‘ν˜•

Algorithm/Basic 8

[μ•Œκ³ λ¦¬μ¦˜] (swift) μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²• (feat. μ΅œλŒ€κ³΅μ•½μˆ˜, μ΅œμ†Œκ³΅λ°°μˆ˜ κ΅¬ν•˜κΈ°)

μ΅œμ†Œκ³΅λ°°μˆ˜, μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό κ΅¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ 정말 κ°„λ‹¨ν•˜κ²Œ κ΅¬ν˜„ν•  수 μžˆμœΌλ©΄μ„œλ„, 계속 for문을 돌리고있고,,, μ‹œκ°„λ‚­λΉ„λ₯Ό ν•  λ•Œκ°€ λ§Žλ‹€. 슀슀둜 κΈ°μ–΅ν•˜κΈ° μœ„ν•΄μ„œ μ μ–΄λ‘λŠ” μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•! κΌ­ κΈ°μ–΅ν•˜κ³  μžˆλ„λ‘ ν•˜μž πŸ”– μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²• μ΄λž€? (feat. μ΅œλŒ€κ³΅μ•½μˆ˜) μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μ€ 두 개의 μ •μˆ˜(μžμ—°μˆ˜) μ‚¬μ΄μ—μ„œμ˜ μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό κ΅¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. ν˜Έμ œλ²•μ΄λž€ 말은 두 μˆ˜κ°€ μ„œλ‘œ(δΊ’) μƒλŒ€λ°© 수λ₯Ό λ‚˜λˆ„μ–΄(陀)μ„œ κ²°κ΅­ μ›ν•˜λŠ” 수λ₯Ό μ–»λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ λ‚˜νƒ€λ‚Έλ‹€. -wiki 2개의 μžμ—°μˆ˜(λ˜λŠ” 정식) a, b에 λŒ€ν•΄μ„œ aλ₯Ό b둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό r이라 ν•˜λ©΄ (단, a>b), a와 b의 μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” b와 r의 μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ κ°™λ‹€. 이 μ„±μ§ˆμ— 따라, bλ₯Ό r둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€ r'λ₯Ό κ΅¬ν•˜κ³ , λ‹€μ‹œ r을 r'둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό..

Algorithm/Basic 2022.12.25

[μ•Œκ³ λ¦¬μ¦˜] μ΄λΆ„κ·Έλž˜ν”„λž€? (νŠΉμ§•, 탐색방법) (feat. BFS,DFS)

πŸ™‹πŸ»‍♀️ μ΄λΆ„κ·Έλž˜ν”„ μœ„ μ‚¬μ§„μ²˜λŸΌ κ·Έλž˜ν”„κ°€ 'λ‘κ°œμ˜ 색'으둜 ν‘œν˜„λ˜λŠ” 것을 μ΄λΆ„κ·Έλž˜ν”„λΌκ³  ν•œλ‹€. 빨간정점과 검은정점 두 그룹으둜 λ‚˜λ‰˜μ—ˆλŠ”λ°, 같은 κ·Έλ£ΉλΌλ¦¬λŠ” μΈμ ‘ν•˜μ§€ μ•Šμ•„μ•Όν•œλ‹€. 즉, κ·Έλž˜ν”„μ˜ λͺ¨λ“  정점이 두 그룹으둜 λ‚˜λ‰˜μ–΄μ§€κ³  μ„œλ‘œ λ‹€λ₯Έ 그룹의 μ •μ λ§Œμ΄ κ°„μ„ μœΌλ‘œ μ—°κ²°λœ κ·Έλž˜ν”„λ₯Ό λ§ν•œλ‹€. πŸ‘» μ΄λΆ„κ·Έλž˜ν”„μ˜ νŠΉμ§• 이뢄 κ·Έλž˜ν”„μΈμ§€ ν™•μΈν•˜κΈ° μœ„ν•΄μ„œλŠ” BFS와 DFS 탐색 방법을 μ΄μš©ν•  수 μžˆλ‹€. DFS와 BFSλ₯Ό ν†΅ν•΄μ„œ κ·Έλž˜ν”„λ₯Ό νƒμƒ‰ν•˜κ²Œ 되면, 같은 depth에 μžˆλŠ” 정점은 같은 색을 κ°–κ²Œ λ˜λŠ” 것이닀. μ—°κ²° μš”μ†Œμ˜ 개수λ₯Ό κ΅¬ν•˜λŠ” 방법과 μœ μ‚¬ν•˜λ‹€. λͺ¨λ“  정점을 λ°©λ¬Έν•΄μ„œ κ²€μ‚¬ν•˜κΈ° λ•Œλ¬Έμ— μ‹œκ°„λ³΅μž‘λ„λŠ” O(V+E)둜 κ·Έλž˜ν”„ 탐색 μ•Œκ³ λ¦¬μ¦˜κ³Ό κ°™λ‹€. πŸ§‘πŸ»‍πŸ’» μ΄λΆ„κ·Έλž˜ν”„μΈμ§€ ν™•μΈν•΄λ³΄λŠ” 방법 ⚠️ μ£Όμ˜μ‚¬ν•­: μ„œλ‘œ μΈμ ‘ν•œ μ •..

Algorithm/Basic 2022.05.25

[μ•Œκ³ λ¦¬μ¦˜] λ°±νŠΈλž˜ν‚Ήμ΄λž€? (Swift) (feat.DFS/BFS)

πŸ™‹πŸ»‍♀️ λ°±νŠΈλž˜ν‚Ήμ΄λž€? λ°±νŠΈλž˜ν‚Ήμ€ λͺ¨λ“  경우의 수λ₯Ό μ „λΆ€ κ³ λ €ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. μΌμ’…μ˜ 탐색 μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ, DFS, BFS 둜 λͺ¨λ‘ κ΅¬ν˜„ κ°€λŠ₯ν•˜λ‹€. λ°±νŠΈλž˜ν‚Ήμ€, 닡이 될 수 μ—†λŠ” ν›„λ³΄λŠ” 더이상 νƒμƒ‰ν•˜μ§€ μ•Šκ³  λ‹€μ‹œ λŒμ•„κ°€λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. λͺ¨λ“  경우의 수λ₯Ό κ³ λ €ν•˜λŠ” λΈŒλ£¨νŠΈν¬μŠ€λ³΄λ‹€ 더 μ‹œκ°„μ„ μ ˆμ•½ν•  수 μžˆλ‹€. μ™„μ „νƒμƒ‰μ˜ λŒ€ν‘œμ μΈ λ°©λ²•μ—λŠ” DFSκ°€ μžˆλ‹€. μž¬κ·€λ₯Ό μ΄μš©ν•΄μ„œ ν˜„μž¬μ‹œμ μ—μ„œ κ³„μ†ν•΄μ„œ 방문할곳을 νƒμƒ‰ν•˜κ³ , λ°©λ¬Έν•œλ‹€. 반면, λ°±νŠΈλž˜ν‚Ήμ€ λΉ„νš¨μœ¨μ μΈ 경둜λ₯Ό μ°¨λ‹¨ν•˜κ³  λͺ©ν‘œμ§€μ μ— 도달할 수 μžˆλŠ” κ°€λŠ₯성이 μ‘΄μž¬ν•˜λŠ” 곳만 νƒμƒ‰ν•˜κΈ° λ•Œλ¬Έμ— μΌμ’…μ˜ κ°€μ§€μΉ˜κΈ°λΌκ³ λ„ λΆ€λ₯Έλ‹€. πŸ™‹πŸ»‍♀️ λ°±νŠΈλž˜ν‚Ή 절차 DFS μˆ˜ν–‰ - μœ λ§ν•œ λ…Έλ“œ κ²€ν†  - μ„œλΈŒνŠΈλ¦¬ 이동 - λ°±νŠΈλž˜ν‚Ή μˆ˜ν–‰ 1. DFS μˆ˜ν–‰ : μž¬κ·€λ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ DFSλ₯Ό κ·ΈλŒ€λ‘œ..

Algorithm/Basic 2022.05.23

[μ•Œκ³ λ¦¬μ¦˜] (Swift) μ΅œκ°• 증가 λΆ€λΆ„ μˆ˜μ—΄ (LIS) μ•Œκ³ λ¦¬μ¦˜ (DP, λ™μ κ³„νšλ²•μ„ ν™œμš©ν•œ LIS)

졜μž₯ 증가 λΆ€λΆ„ μˆ˜μ—΄ (LIS,Longest Increasing Subsequence) μ΄λž€? μ–΄λ–€ μž„μ˜μ˜ μˆ˜μ—΄μ΄ μ£Όμ–΄μ§ˆ λ•Œ, 이 μˆ˜μ—΄μ—μ„œ λͺ‡ 개의 μˆ˜λ“€μ„ μ œκ±°ν•΄μ„œ λΆ€λΆ„ μˆ˜μ—΄μ„ λ§Œλ“€ 수 μžˆλ‹€. μ΄λ•Œ λ§Œλ“€μ–΄μ§„ λΆ€λΆ„ μˆ˜μ—΄ 쀑 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λœ κ°€μž₯ κΈ΄ μˆ˜μ—΄μ„ "졜μž₯ 증가 λΆ€λΆ„ μˆ˜μ—΄"이라고 ν•œλ‹€. - λ‚˜λ¬΄μœ„ν‚€ 🌳 β–· μ˜ˆμ‹œλ₯Ό λ“€μ–΄λ³΄μž. [ 3, 5, 7, 9, 2, 1, 4, 8] λ‹€μŒκ³Ό 같은 μˆ˜μ—΄μ΄ μžˆλ‹€κ³  ν•˜μž. 이 μˆ˜μ—΄μ—μ„œ λͺ‡ 개의 수λ₯Ό μ œκ±°ν•΄μ„œ λΆ€λΆ„μˆ˜μ—΄μ„ λ§Œλ“€ 수 μžˆλ‹€. λͺ‡ 개의 수λ₯Ό μ œκ±°ν•΄μ„œ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 이루어진 μˆ˜μ—΄μ„ 졜μž₯ 증가 λΆ€λΆ„ μˆ˜μ—΄μ΄λΌκ³  ν•˜μ˜€λŠ”λ°, 즉, '곡차'κ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ•„λ„ λΆ€λΆ„μˆ˜μ—΄μ΄λΌκ³  λ³Έλ‹€λŠ” 것이닀. (κ·œμΉ™μ μ΄μ§€ μ•Šκ³  μ˜€λ¦„μ°¨μˆœμ΄λ©΄ λœλ‹€λŠ” 뜻) λ”°λΌμ„œ μœ„ μˆ˜μ—΄μ—μ„œ λ„μΆœλ  수 μžˆλŠ” λΆ€λΆ„μˆ˜..

Algorithm/Basic 2022.03.13

[μ•Œκ³ λ¦¬μ¦˜] Dynamic Programming (동적 κ³„νšλ²•, DP) (feat. Swift μŠ€μœ„ν”„νŠΈ)

Dynamic Programming (동적 κ³„νšλ²•) λ™μ κ³„νšλ²•(λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ°) μ΄λž€, λ³΅μž‘ν•œ 문제λ₯Ό κ°„λ‹¨ν•œ μ—¬λŸ¬ 개의 문제둜 λ‚˜λˆ„μ–΄ ν‘ΈλŠ” 방법을 λ§ν•œλ‹€. 이것은 λΆ€λΆ„ 문제 반볡과 졜적 λΆ€λΆ„ ꡬ쑰λ₯Ό 가지고 μžˆλŠ” μ•Œκ³ λ¦¬μ¦˜μ„ 일반적인 방법에 λΉ„ν•΄ λ”μš± 적은 μ‹œκ°„μ„ λ‚΄μ–΄ ν’€ λ•Œ μ‚¬μš©ν•œλ‹€. - Wikipedia β–· μ½”λ”©ν…ŒμŠ€νŠΈμ—μ„œμ˜ DP μ½”λ”©ν…ŒμŠ€νŠΈμ˜ 단골 문제둜 좜제되고 μžˆκΈ°μ— ν•„μˆ˜μ μœΌλ‘œ μ•Œμ•„μ•Όν•˜λŠ” κ°œλ… 쀑 ν•˜λ‚˜μ΄λ‹€. κ°„ν˜Ή μ œμ•½μ‚¬ν•­μ— μ£Όμ–΄μ§€λŠ” 숫자의 λ²”μœ„κ°€ 크고, 경우의 μˆ˜κ°€ μ—„μ²­ λ§Žμ€ λ¬Έμ œλ“€μ΄ λŒ€λΆ€λΆ„ DP(λ™μ κ³„νšλ²•) 을 ν™œμš©ν•˜μ—¬ ν’€μ–΄μ•Ό ν•˜λŠ” λ¬Έμ œμ΄λ‹€. Dynamic Programming (동적 κ³„νšλ²•) 방법 λͺ¨λ“  μž‘μ€ λ¬Έμ œλ“€μ„ ν•œ 번만 ν’€μ–΄μ•Ό ν•œλ‹€. λ”°λΌμ„œ 정닡을 κ΅¬ν•œ μž‘μ€ 문제의 닡은 μ–΄λ”˜κ°€μ— λ©”λͺ¨ν•΄λ†“λŠ”..

Algorithm/Basic 2022.03.03

[자료ꡬ쑰] μŠ€νƒ, 큐 (feat. 파이썬)

1. 큐 (Queue) 1.1 큐 (queue)λž€? κ°€μž₯ λ¨Όμ € 넣은 데이터λ₯Ό κΊΌλ‚Ό 수 μžˆλŠ” ꡬ쑰 λŒ€κΈ°ν–‰λ ¬μ„ 생각, λ¨Όμ € κΈ°λ‹€λ¦° μ‚¬λžŒμ΄ λ¨Όμ € ν˜œνƒμ„ λ°›λŠ”λ‹€ FIFO (FIrst In, First Out) 방식 = LILO (Last In, Last Out) 방식 1.2 큐의 ꡬ쑰 1.3 νλŠ” μ–΄λ””μ„œ 많이 μ“°μΌκΉŒ? νλŠ” 주둜 μš΄μ˜μ²΄μ œμ—μ„œ λ©€ν‹°νƒœμŠ€ν‚Ήμ„ κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„œ ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ₯΄λ§ 방식을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ 많이 쓰인닀 1.4 큐의 μš©μ–΄ Enqueue (인큐) = 데이터λ₯Ό λ„£λŠ” κΈ°λŠ₯ Dequeue (디큐) = 데이터λ₯Ό κΊΌλ‚΄λŠ” κΈ°λŠ₯ (νμ—μ„œ λ°μ΄ν„°λŠ” μ‚­μ œλœλ‹€.) 1.5 νŒŒμ΄μ¬μ—μ„œ Queue κ΅¬ν˜„ν•˜κΈ° νŒŒμ΄μ¬μ—μ„œ 인큐와 λ””νλŠ” put, get으둜 κ΅¬ν˜„ν•  수 μžˆλ‹€. import queue #큐 생성 q = queue...

Algorithm/Basic 2021.09.13

[μ•Œκ³ λ¦¬μ¦˜] 탐색 μ•Œκ³ λ¦¬μ¦˜ DFS, BFS

-- λ³Έ ν¬μŠ€νŒ…μ€ 이것이 취업을 μœ„ν•œ μ½”λ”© ν…ŒμŠ€νŠΈλ‹€ with 파이썬 책을 μ°Έκ³ ν•˜μ—¬ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 1. DFS Depth First Search, 깊이 μš°μ„  탐색 κ·Έλž˜ν”„μ˜ κΉŠμ€ 뢀뢄을 μš°μ„ μ μœΌλ‘œ νƒμƒ‰ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ 주둜 μŠ€νƒμ„ ν™œμš©ν•˜λŠ” λ°©μ‹μž„ μŠ€νƒ : ν›„μž…ν›„μΆœ) λ™μž‘λ°©μ‹ 탐색 μ‹œμž‘ λ…Έλ“œλ₯Ό μŠ€νƒμ— μ‚½μž…ν•˜κ³  방문처리λ₯Ό ν•œλ‹€. μŠ€νƒμ˜ 졜 상단 λ…Έλ“œμ— λ°©λ¬Έν•˜μ§€ μ•Šμ€ μΈμ ‘λ…Έλ“œκ°€ μžˆλ‹€λ©΄ κ·Έ μΈμ ‘λ…Έλ“œλ₯Ό μŠ€νƒμ— λ„£κ³  방문처리λ₯Ό ν•œλ‹€. λ°©λ¬Έν•˜μ§€ μ•Šμ€ μΈμ ‘λ…Έλ“œκ°€ μ—†μœΌλ©΄ μŠ€νƒμ—μ„œ μ΅œμƒλ‹¨ λ…Έλ“œλ₯Ό κΊΌλ‚Έλ‹€. 2번의 과정을 더 이상 μˆ˜ν–‰ν•  수 없을 λ•ŒκΉŒμ§€ λ°˜λ³΅ν•œλ‹€. λ™μž‘λ°©μ‹μ„ μ•„λž˜ κ·Έλž˜ν”„λ₯Ό μ˜ˆμ‹œλ‘œ μ‚΄νŽ΄λ³΄μž. λ§ˆμ§€λ§‰μ— "μŠ€νƒμ΄ λ“€μ–΄κ°„ μˆœμ„œ" λ₯Ό ν•œλ° λͺ¨μ•„보면, 1,2,7,6,8,3,4,5 κ°€ λœλ‹€. β–Ά DFSλ₯Ό μ½”λ“œλ‘œ κ΅¬ν˜„ν•΄λ³΄κΈ° μœ„μ™€..

Algorithm/Basic 2021.07.23

[μ•Œκ³ λ¦¬μ¦˜] ν”„λ‘œκ·Έλž˜λ°μ—μ„œ κ·Έλž˜ν”„λ₯Ό ν‘œν˜„ν•˜λŠ” 방식 (인접행렬 방식, μΈμ ‘λ¦¬μŠ€νŠΈ 방식)

-- λ³Έ ν¬μŠ€νŒ…μ€ 이것이 취업을 μœ„ν•œ μ½”λ”© ν…ŒμŠ€νŠΈλ‹€ with 파이썬 책을 μ°Έκ³ ν•˜μ—¬ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 1. νƒμƒ‰μ΄λž€ λ§Žμ€ μ–‘μ˜ 데이터 μ€‘μ—μ„œ μ›ν•˜λŠ” 데이터λ₯Ό μ°ΎλŠ” κ³Όμ • λŒ€ν‘œμ μΈ 탐색 μ•Œκ³ λ¦¬μ¦˜μ€ DFS 와 BFSκ°€ 있음 2. κ·Έλž˜ν”„ ν‘œν˜„ 방식 κ·Έλž˜ν”„μ˜ ꡬ성 : λ…Έλ“œ(정점), κ°„μ„ (Edge) κ·Έλž˜ν”„λ₯Ό μ½”λ“œλ‘œ ν‘œν˜„ν•˜λŠ” 방법은 2가지가 μžˆλ‹€ 2.1 인접행렬 ν‘œν˜„ 방식 2차원 λ°°μ—΄λ‘œ κ·Έλž˜ν”„μ˜ 연결관계λ₯Ό ν‘œν˜„ν•˜λŠ” 방식이닀. μ•„λž˜ κ·Έλž˜ν”„λ₯Ό ν‘œλ‘œ ν‘œν˜„ν•˜λ©΄ 였λ₯Έμͺ½μ˜ ν‘œμ²˜λŸΌ ν‘œν˜„μ΄ 될 것이닀. 이 κ·Έλž˜ν”„λ₯Ό 2차원 리슀트둜 κ΅¬μ„±ν•˜κ²Œ 되면 μ•„λž˜μ™€ κ°™λ‹€ INF = 999999 #λ¬΄ν•œλŒ€μ˜ λΉ„μš© μ„ μ–Έ #2차원 배열을 ν™œμš©ν•˜μ—¬ κ·Έλž˜ν”„λ₯Ό ν‘œν˜„ graph = [ [0, 7, 5], [7, 0 INF], [5, INF, 0] ] print(..

Algorithm/Basic 2021.07.23
λ°˜μ‘ν˜•