λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
728x90
λ°˜μ‘ν˜•

πŸ–₯ Computer Science61

[Algorithm] 합병 μ •λ ¬(Merge Sort)λž€? (feat. Swift) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ λΆ„ν•  정볡 μ•Œκ³ λ¦¬μ¦˜ 쀑 ν•˜λ‚˜μΈ 합병 정렬에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ €κ³  ν•©λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ λΆ„ν•  정볡(Divide and Conquer Algorithm) μ•Œκ³ λ¦¬μ¦˜μ΄λž€? 🏑 μœ„μ—μ„œ 합병 정렬은 λΆ„ν•  정볡 μ•Œκ³ λ¦¬μ¦˜ 쀑 ν•˜λ‚˜λΌκ³  λ§μ”€λ“œλ ΈλŠ”λ°μš”. κ·Έλ ‡λ‹€λ©΄ λΆ„ν•  정볡 μ•Œκ³ λ¦¬μ¦˜μ€ λ¬΄μ—‡μΌκΉŒμš”? 말 κ·ΈλŒ€λ‘œ μ§€κΈˆ ν•΄κ²°ν•  수 μ—†λŠ” 문제λ₯Ό μž‘κ²Œ μͺΌκ°œμ„œ(λΆ„ν• ) ν’€μ–΄λ‚˜κ°€λŠ”(정볡) κ²ƒμž…λ‹ˆλ‹€. μž‘μ€ 문제λ₯Ό ν•΄κ²°ν•˜μ—¬ 큰 문제λ₯Ό ν•΄κ²°ν•΄λ‚˜κ°€λŠ” μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μž¬κ·€ ν•¨μˆ˜λ₯Ό 톡해 μžμ—°μŠ€λŸ½κ²Œ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 합병 μ •λ ¬μ΄λž€? 🀼‍♀️ 합병 μ •λ ¬ λ˜λŠ” 병합 정렬은 비ꡐ 기반 μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. 일반적인 λ°©λ²•μœΌλ‘œ κ΅¬ν˜„ν–ˆμ„ λ•Œ 이 정렬은 μ•ˆμ • 정렬에 μ†ν•˜λ©°, λΆ„ν•  정볡 μ•Œκ³ λ¦¬μ¦˜μ˜ ν•˜λ‚˜μ΄λ‹€. μ‘΄ 폰 λ…Έμ΄λ§Œμ΄ 1.. 2021. 10. 14.
[Algorithm] μ‹œκ°„λ³΅μž‘λ„(Time-Complexity)λž€? (feat. Big O) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μš”μ¦˜ λ“€μ–΄ μ•Œκ³ λ¦¬μ¦˜ 곡뢀λ₯Ό ν•˜λŠ”λ° μ•Œκ³ λ¦¬μ¦˜μ˜ 핡심인 μ‹œκ°„λ³΅μž‘λ„μ— λŒ€ν•΄μ„œ μ •λ¦¬ν•˜μ§€ μ•Šμ€ 것 κ°™μ•„μ„œ.. 이번 κΈ°νšŒμ— ꡬ체적으둜 μ‹œκ°„λ³΅μž‘λ„μ— λŒ€ν•΄μ„œ μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€! λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ μ‹œκ°„λ³΅μž‘λ„λž€? ⏱ 컴퓨터곡학 μš©μ–΄λ‘œ, 컴퓨터 ν”„λ‘œκ·Έλž¨μ˜ μž…λ ₯κ°’κ³Ό μ—°μ‚° μˆ˜ν–‰ μ‹œκ°„μ˜ 상관관계λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 척도이닀. 일반적으둜 μ‹œκ°„ λ³΅μž‘λ„λŠ” 점근 ν‘œκΈ°λ²•μ„ μ΄μš©ν•˜μ—¬ λ‚˜νƒ€λ‚Έλ‹€. 즉, κ³„μ‚°λ˜λŠ” 양에 λ”°λΌμ„œ μ‹œκ°„μ΄ μ–Όλ§ˆλ‚˜ 걸릴지λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ²ƒμž…λ‹ˆλ‹€. μ‹œκ°„λ³΅μž‘λ„ ν‘œκΈ°λ²• πŸ–Š μ‹œκ°„λ³΅μž‘λ„ ν‘œκΈ°λ²•μ€ λΉ…μ˜€λ©”κ°€,빅세타,λΉ…μ˜€ μ΄λ ‡κ²Œ 3가지가 μžˆμŠ΅λ‹ˆλ‹€. 1. BigΩ (Best case) λΉ…μ˜€λ©”κ°€ ν‘œκΈ°λ²•μ€ μ΅œμ„ μ˜ μ‹€ν–‰μ‹œκ°„ 즉, κ°€μž₯ λΉ λ₯Έ μΌ€μ΄μŠ€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ²ƒμž…λ‹ˆλ‹€. 2. Big𝚯 (Average case) 빅세타 ν‘œκΈ°λ²•μ€.. 2021. 9. 29.
[Algorithm] μ‚½μž… μ •λ ¬(Insertion Sort) μ΄λž€? (feat.Swift) μ•ˆλ…•ν•˜μ„Έμš” FomaπŸ’» μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ 학ꡐ μ•Œκ³ λ¦¬μ¦˜ μˆ˜μ—…μ„ λ“£λŠ” 쀑에 μ‚½μž… 정렬을 κ΅¬ν˜„ν•΄λ³΄λŠ” κ³Όμ œκ°€ μžˆμ—ˆλŠ”λ°... λ”± 이 방식이 μ–΄λ–€ 것이고 μ–΄λ–»κ²Œ κ΅¬ν˜„ν•΄μ•Ό ν•œλ‹€! 라고 ꡬ체적으둜 λ– μ˜€λ₯΄μ§€κ°€ μ•Šλ”λΌκ΅¬μš”... κ·Έλž˜μ„œ μ‚½μž… 정렬이 무엇이고 μ–΄λ–»κ²Œ κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ”μ§€μ— λŒ€ν•΄ 정리해보렀고 ν•©λ‹ˆλ‹€! λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ μ‚½μž… μ •λ ¬μ΄λž€? μ‚½μž… 정렬은 자료 λ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό μ•žμ—μ„œλΆ€ν„° μ°¨λ‘€λŒ€λ‘œ 이미 μ •λ ¬λœ λ°°μ—΄ λΆ€λΆ„κ³Ό λΉ„κ΅ν•˜μ—¬, μžμ‹ μ˜ μœ„μΉ˜λ₯Ό μ°Ύμ•„ μ‚½μž…ν•¨μœΌλ‘œμ¨ 정렬을 μ™„μ„±ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. -μœ„ν‚€ λ°±κ³Ό - μ •λ ¬ν•˜λŠ” 과정을 μ‚΄νŽ΄λ³΄λ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. μ‚½μž… μ •λ ¬ κ³Όμ • 82,10,9,72,31,45,60λ₯Ό μ‚½μž… 정렬을 ν•˜λŠ” 과정은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. 1. λ¨Όμ € 맨 첫 번째인 82와 κ·Έ λ‹€μŒ 숫자인 10을 λΉ„κ΅ν•΄μ€λ‹ˆλ‹€. 10이 더.. 2021. 9. 28.
[CS] BDD(Behavior-Driven-Development)λž€? μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μš”μ¦˜ μ§„ν–‰ν•˜κ³  μžˆλŠ” ν”„λ‘œμ νŠΈλ₯Ό ν…ŒμŠ€νŠΈ 주도 κ°œλ°œν•˜λ €κ³  ν•˜λ‹€κ°€ 쒋은 ν”„λ ˆμž„μ›Œν¬λ₯Ό 찾게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. Quick/Nimble μ΄λΌλŠ” ν”„λ ˆμž„μ›Œν¬μ˜€λŠ”λ°μš”. μ—¬κΈ°μ„œ Quick은 BDD ν”„λ ˆμž„μ›Œν¬λΌκ³  μ†Œκ°œν•˜λ”λΌκ΅¬μš”. κ·Έλž˜μ„œ BDDκ°€ 뭐고 TDDμ™€λŠ” 무엇이 λ‹€λ₯Έμ§€ 정리해보렀고 ν•©λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ BDDλž€? TDDμ—μ„œ νŒŒμƒλœ 개발 λ°©λ²•λ‘ μœΌλ‘œ κ°œλ°œμžμ™€ λΉ„κ°œλ°œμžκ°„μ˜ ν˜‘μ—… 과정을 λ…Ήμ—¬λ‚Έ 방법이닀. μ‚¬μš©μžμ˜ ν–‰μœ„λ₯Ό μž‘μ„±ν•˜κ³  κ²°κ³Ό 검증을 μ§„ν–‰ν•˜λ©° BDD둜 ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν•¨μ— 따라 섀계 μ—­μ‹œ ν–‰μœ„μ˜ 쀑심이 λ˜λŠ” 도메인 기반 섀계가 λœλ‹€. 즉, μ‚¬μš©μžμ˜ ν–‰μœ„λ₯Ό 미리 μ˜ˆμƒν•˜κ³  κ²°κ³Όλ₯Ό ν…ŒμŠ€νŠΈ ν•΄λ³΄λŠ” 개발 λ°©λ²•μž…λ‹ˆλ‹€. BDD의 개발 절차 BDDλŠ” λ§Žμ€ μ‚¬λžŒλ“€μ΄ μ—°κ΅¬ν•œ 끝에 μ •ν˜•ν™”λœ ν˜•μ‹μ΄ λ§Œλ“€μ–΄.. 2021. 8. 31.
[Algorithm] λ°±νŠΈλž˜ν‚Ή(Backtracking)μ΄λž€? (feat. μ˜ˆμ œν¬ν•¨) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ N-Queen 문제λ₯Ό ν’€λ©΄μ„œ ν•΄λ‹Ή λ¬Έμ œκ°€ λ°±νŠΈλž˜ν‚Ή λ¬Έμ œλΌλŠ” 것을 μ•Œκ²Œ λ˜μ—ˆλŠ”λ°μš”. κ·Έλž˜μ„œ λ°±νŠΈλž˜ν‚Ήμ΄ 무엇이고 μ–΄λ–»κ²Œ κ΅¬ν˜„ν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ”μ§€μ— λŒ€ν•΄ 정리해보렀고 ν•©λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ λ°±νŠΈλž˜ν‚Ήμ΄λž€? λͺ¨λ“  경우의 수λ₯Ό μ „λΆ€ κ³ λ €ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ μƒνƒœκ³΅κ°„μ„ 트리둜 λ‚˜νƒ€λ‚Ό 수 μžˆμ„ λ•Œ μ ν•©ν•œ 방식이닀. μΌμ’…μ˜ 트리 탐색 μ•Œκ³ λ¦¬μ¦˜μ΄λΌκ³  봐도 λœλ‹€. 방식에 λ”°λΌμ„œ κΉŠμ΄μš°μ„ νƒμƒ‰(Depth First Search, DFS)κ³Ό λ„ˆλΉ„μš°μ„ νƒμƒ‰(Breadth First Search, BFS), μ΅œμ„  μš°μ„  탐색(Best First Search/HeuristicSearch)이 μžˆλ‹€. λͺ¨λ“  경우의 수λ₯Ό κ³ λ €ν•΄μ•Ό ν•˜λŠ” 문제라면, DFSκ°€ λ‚«λ‹€. BFSλ‘œλ„ κ΅¬ν˜„μ΄ λ¬Όλ‘  κ°€λŠ₯ν•˜μ§€λ§Œ,.. 2021. 8. 28.
[CS] μ˜μ‘΄μ„± μ£Όμž…(Dependency Injection)μ΄λž€? (feat. μ¨μ•Όν•˜λŠ” 이유) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ μ˜μ‘΄μ„± μ£Όμž…μ΄ 무엇이고 μ¨μ•Όν•˜λŠ” μ΄μœ μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. SOLIDμ›μΉ™μ˜ ν•˜λ‚˜μ΄κΈ°λ„ ν•˜κ³  졜근 RIBs μ•„ν‚€ν…μ²˜λ₯Ό κ³΅λΆ€ν•˜κ³  μžˆλŠ”λ° UIViewController도 직접 μ±„νƒν•˜μ§€ μ•Šκ³  ViewControllable둜 ν”„λ‘œν† μ½œμ„ λ§Œλ“€μ–΄μ„œ μ£Όμž…ν•˜λ”λΌκ΅¬μš”.. λ­”κ°€ μΆ”μƒμ μœΌλ‘œλŠ” μ•Œκ² λŠ”λ° ꡬ체적으둜 λͺ…ν™•ν•˜κ²Œ 이게 뭐고 이게 μ™œ ν•„μš”ν•œκ°€μ— λŒ€ν•΄μ„œ μ•Œμ§€ λͺ»ν•΄μ„œ 글을 μ •λ¦¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€! λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ μ˜μ‘΄μ„±μ„ κ°–λŠ”λ‹€λŠ” 것은 λ¬΄μ—‡μΌκΉŒ? πŸ€” λ§Œμ•½ 배터리가 μΌμ²΄ν˜•μΈ μžλ™μ°¨ μž₯λ‚œκ° πŸš— 이 μžˆλ‹€κ³  κ°€μ •ν• κ²Œμš”. 이 μžλ™μ°¨ μž₯λ‚œκ°μ€ 배터리가 λ‹€ λ‹³κ²Œ 되면 더 이상 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 이 경우 μžλ™μ°¨ μž₯λ‚œκ°μ€ 배터리에 μ˜μ‘΄ν•˜κ³  μžˆλŠ” κ²ƒμž…λ‹ˆλ‹€. μ½”λ“œλ‘œ μ„€λͺ…을 ν•˜λ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.. 2021. 8. 26.
[Data Structure] μ—°κ²°λ¦¬μŠ€νŠΈμ— λŒ€ν•΄ μ•Œμ•„λ³΄μž(Linked List) μ•ˆλ…•ν•˜μ„Έμš” FomaπŸ‘Ÿ μž…λ‹ˆλ‹€. μ˜€λŠ˜μ€ μ—°κ²°λ¦¬μŠ€νŠΈμ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ €κ³  ν•˜λŠ”λ°μš”. μ–Όλ§ˆ 전에 2021 카카였 인턴쉽에 μΆœμ œλ˜μ—ˆλ˜ "ν‘œνŽΈμ§‘" μ΄λΌλŠ” 문제λ₯Ό ν’€κ²Œ λ˜μ—ˆλŠ”λ° ν•΄λ‹Ή λ¬Έμ œλŠ” μ—°κ²° 리슀트λ₯Ό κΌ­ μ‚¬μš©ν•΄μ•Ό νš¨μœ¨μ„±μ„ 톡과할 수 μžˆλŠ” λ¬Έμ œμ˜€μŠ΅λ‹ˆλ‹€. κ·Έ λ™μ•ˆ μ—°κ²° 리슀트λ₯Ό μ‚¬μš©ν•΄λ³Ό 일이 거의 μ—†μ–΄μ„œ ꡬ체적으둜 μ•Œμ•„λ³Έ 적이 μ—†μ—ˆλŠ”λ° 이번 κΈ°νšŒμ— μ—°κ²° 리슀트의 μž₯점과 κ΅¬ν˜„ν•˜λŠ” 방법에 λŒ€ν•΄ μ •λ¦¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ Linked Listλž€? "μ—°κ²° 리슀트, λ§ν¬λ“œ 리슀트(linked list)λŠ” 각 λ…Έλ“œκ°€ 데이터와 포인터λ₯Ό 가지고 ν•œ μ€„λ‘œ μ—°κ²°λ˜μ–΄ μžˆλŠ” λ°©μ‹μœΌλ‘œ 데이터λ₯Ό μ €μž₯ν•˜λŠ” 자료 ꡬ쑰이닀. μ΄λ¦„μ—μ„œ λ§ν•˜λ“―μ΄ 데이터λ₯Ό λ‹΄κ³  μžˆλŠ” λ…Έλ“œλ“€μ΄ μ—°κ²°λ˜μ–΄ μžˆλŠ”λ°, λ…Έλ“œμ˜ 포인터가 λ‹€μŒμ΄λ‚˜ μ΄μ „μ˜ λ…Έλ“œμ™€μ˜ 연결을.. 2021. 8. 11.
[πŸ’» Programming] Clean Code - κΉ”λ”ν•œ 주석과 ν˜•μ‹μ€ μ–΄λ–»κ²Œ μ¨μ•Όν• κΉŒ? μ•ˆλ…•ν•˜μ„Έμš” FomaπŸ‘Ÿ μž…λ‹ˆλ‹€! ν‰μ†Œμ— μ½”λ“œλ₯Ό 가독성 있게 μž‘μ„±ν•  λ•Œ ν˜•μ‹μ„ μ–΄λ–»κ²Œ λ§žμΆ°μ•Ό 될까? 에 λŒ€ν•œ κ³ λ―Όκ³Ό 또 λ‹€λ₯Έ μ‚¬λžŒμ΄ λ³Ό λ•Œ μ• λ§€ν•œ μ½”λ“œλ₯Ό μ μ—ˆμ„ λ•Œ μ£Όμ„μœΌλ‘œ μ–΄λ–»κ²Œ μ„€λͺ…ν•΄μ•Ό ν• κΉŒ? 에 λŒ€ν•œ 고민을 ν–ˆμ—ˆλŠ”λ°μš”. 클린 μ½”λ“œμ—μ„œ 쒋은 주석과 λ‚˜μœ 주석, 가독성 있게 ν˜•μ‹μ„ λ§žμΆ”λŠ” 법에 λŒ€ν•΄μ„œ μ•Œκ²Œ λ˜μ–΄ μ •λ¦¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€. (μ œκ°€ ν‰μ†Œμ— 많이 μ“°λ˜ λ‚˜μœ λ²„λ¦‡μ΄λ‚˜ μ€‘μš”ν•˜λ‹€κ³  μƒκ°λ“œλŠ” 것 μœ„μ£Όλ‘œ μ •λ¦¬ν•˜κ² μŠ΅λ‹ˆλ‹€.) λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ 주석 이 μ±…μ˜ μ €μžμΈ λ°₯ μ•„μ €μ”¨λŠ” 주석에 λŒ€ν•΄μ„œ μ΄λ ‡κ²Œ λ§ν•©λ‹ˆλ‹€. 주석은 기껏해야 ν•„μš”μ•…μ΄λ‹€. ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ 자체λ₯Ό μΉ˜λ°€ν•˜κ²Œ μ‚¬μš©ν•΄ μ˜λ„λ₯Ό ν‘œν˜„ν•  λŠ₯λ ₯이 μžˆλ‹€λ©΄ 주석은 거의 ν•„μš”ν•˜μ§€ μ•Šλ‹€. μ΄λ ‡κ²Œ 주석을 λ¬΄μ‹œν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒμš”? λ°”λ‘œ 주석은 였래되면 였래될수둝 그릇될 κ°€.. 2021. 8. 7.
[πŸ’» Programming] Clean Code - κΉ¨λ—ν•œ ν•¨μˆ˜λŠ” μ–΄λ–»κ²Œ μž‘μ„±ν• κΉŒ? μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ‘Ÿ μž…λ‹ˆλ‹€! 항상 ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜λ©΄μ„œ "νŒŒλΌλ―Έν„°λŠ” λͺ‡ κ°œκ°€ μ λ‹Ήν• κΉŒ?", "μ–΄λŠμ •λ„ λ‹¨μœ„λ‘œ μ¨μ•Όν• κΉŒ?" λ“± ν•¨μˆ˜λ₯Ό μ μ ˆν•˜κΈ° μ“°κΈ° μœ„ν•΄μ„œ κ³ λ―Όν–ˆμ—ˆλŠ”λ°μš”. "클린 μ½”λ“œ" 책을 ν†΅ν•΄μ„œ κΉ”λ”ν•œ ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜λŠ” 법에 λŒ€ν•΄ μ•Œκ²Œ λ˜μ–΄ 정리해보렀고 ν•©λ‹ˆλ‹€. 1. 더 μž‘κ²Œ κΉ”λ”ν•œ ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜κΈ° μœ„ν•΄μ„  이 μ±…μ˜ μ €μžμΈ λ§ˆν‹΄μ€ μ΅œλŒ€ν•œ μž‘κ²Œ 더 μž‘κ²Œ 쓰라고 κ°•μ‘°ν•©λ‹ˆλ‹€. (μ‹€μ œλ‘œ 읡슀트림 ν”„λ‘œκ·Έλž˜λ° 개발자인 "μΌ„νŠΈ λ°±"이 μž‘μ„±ν•œ ν•¨μˆ˜λŠ” 2μ€„μ—μ„œ 4μ€„λ‘œλ°–μ— 이루어져 μžˆμ§€ μ•Šλ‹€κ³  ν•˜λ„€μš”) "κ·Έλ ‡λ‹€λ©΄ μž‘κ²Œ μ“°λŠ” κ²ƒμ˜ 기쀀은 μ–΄λŠ μ •λ„μΌκΉŒμš”?" ν•¨μˆ˜ μ•ˆμ—μ„œ if/else/while문에 μ“°μ΄λŠ” 블둝은 ν•œ 쀄이 μ λ‹Ήν•˜κ³  λ“€μ—¬μ“°κΈ°λŠ” 1λ‹¨μ—μ„œ 2단을 λ„˜μ–΄μ„œλ©΄ μ•ˆλœλ‹€κ³  ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ μž‘κ²Œ ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄μ•Ό 더 μ΄ν•΄ν•˜κΈ° 쉽.. 2021. 8. 4.
[Algorithm] μ‘°ν•©(Combination)μ΄λž€? (feat.Swift) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ‘Ÿ μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œμ—μ„œ 정말 λΉˆλ²ˆν•˜κ²Œ μ‚¬μš©λ˜λŠ” "μ‘°ν•©" 에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ μ‘°ν•©μ΄λž€? n개의 μ›μ†Œμ—μ„œ r 개의 μ›μ†Œλ₯Ό μˆœμ„œμ— 상관없이 λ½‘λŠ” 경우의 수 - λ‚˜λ¬΄ μœ„ν‚€ - μˆœμ—΄κ³Ό λ‹€λ₯΄κ²Œ μˆœμ„œλŠ” μ€‘μš”ν•˜μ§€ μ•Šμ•„μš”. μ‰½κ²Œ μ„€λͺ…ν•˜λ©΄ 물건을 사고 총 가격을 κ΅¬ν•˜λŠ” 것과 λΉ„μŠ·ν•΄μš”. 과일둜 예λ₯Ό λ“€λ©΄ 사과,포도,μˆ˜λ°•μ΄ μžˆλ‹€λ©΄ 사과,포도,μˆ˜λ°• 포도,사과,μˆ˜λ°• μˆ˜λ°•,사과,포도 ... λ“± μ–΄λ–€ λ°©μ‹μœΌλ‘œ 사도 총 가격을 λ˜‘κ°™κ² μ£ ? 즉, 이루어진 과일이 λ˜‘κ°™λ‹€λ©΄ ν•˜λ‚˜μ˜ μ‘°ν•©μœΌλ‘œ μƒκ°ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ½”λ“œ κ΅¬ν˜„ λ¨Όμ € 경우의 수λ₯Ό 담을 배열을 λ§Œλ“€μ–΄μ€λ‹ˆλ‹€. var cases:[[Int]] = [] combination의 νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •ν•΄μ£ΌλŠ”λ° μΈλ±μŠ€λ“€μ„ λ‹΄κ³ μžˆλŠ” ind.. 2021. 6. 27.
[Algorithm] μˆœμ—΄(Permutation)μ΄λž€? (feat.Swift) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ‘Ÿ μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œμ—μ„œ 정말 λΉˆλ²ˆν•˜κ²Œ μ‚¬μš©λ˜λŠ” "μˆœμ—΄"에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”! μˆœμ—΄μ΄λž€? μ„œλ‘œ λ‹€λ₯Έ n개의 μ›μ†Œμ—μ„œ r개λ₯Ό 쀑볡없이 골라 μˆœμ„œμ— μƒκ΄€μžˆκ²Œ λ‚˜μ—΄ν•˜λŠ” 것을 이λ₯Έλ‹€. - λ‚˜λ¬΄ μœ„ν‚€ - μ‰½κ²Œ μ„€λͺ…ν•˜λ©΄ 쀄 μ„Έμš°κΈ°μ™€ λ˜‘κ°™μ•„μš”. A,B,CλΌλŠ” 학생을 쀄 μ„Έμš°λŠ” 방법은 ABC,ACB,BAC,BCA,CAB,CBA 등이 있겠죠? 이 μ€‘μ—μ„œ 2λͺ…μ˜ ν•™μƒμœΌλ‘œ 쀄 μ„Έμš°λŠ” 방법은 AB,AC,BA,BC,CA,CB 등이 μžˆμ„κ±°μ—μš”. μ½”λ“œ κ΅¬ν˜„ 경우의 μˆ˜λ“€μ„ 담을 이쀑 배열을 λ§Œλ“€μ–΄μ€λ‹ˆλ‹€. var cases:[[Int]] = [] λͺ‡ 개λ₯Ό 뽑을지 μ •ν•΄μ€λ‹ˆλ‹€. let pickCount = 3 본격적으둜 μˆœμ—΄ ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄μ€λ‹ˆλ‹€. νŒŒλΌλ―Έν„°λ‘œλŠ” 전체 μΈλ±μŠ€κ°€ λ‹΄κΈ΄.. 2021. 6. 27.
[Algorithm] λ„ˆλΉ„μš°μ„ νƒμƒ‰(BFS,Breadth-First-Search)λž€?(feat.Swift) μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ‘Ÿ μž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ 트리λ₯Ό νƒμƒ‰ν•˜λŠ”λ° μ“°μ΄λŠ” μ•Œκ³ λ¦¬μ¦˜μΈ λ„ˆλΉ„μš°μ„ νƒμƒ‰(BFS)에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~ BFSλž€? λ„ˆλΉ„ μš°μ„  탐색은 λ§Ήλͺ©μ  νƒμƒ‰λ°©λ²•μ˜ ν•˜λ‚˜λ‘œ μ‹œμž‘ 정점을 λ°©λ¬Έν•œ ν›„ μ‹œμž‘ 정점에 μΈμ ‘ν•œ λͺ¨λ“  정점듀을 μš°μ„  λ°©λ¬Έν•˜λŠ” 방법이닀. 더 이상 λ°©λ¬Έν•˜μ§€ μ•Šμ€ 정점이 없을 λ•ŒκΉŒμ§€ λ°©λ¬Έν•˜μ§€ μ•Šμ€ λͺ¨λ“  정점듀에 λŒ€ν•΄μ„œλ„ λ„ˆλΉ„ μš°μ„  검색을 μ μš©ν•œλ‹€. 큐λ₯Ό μ‚¬μš©ν•΄μ•Όλ§Œ 레벨 μˆœμ„œλŒ€λ‘œ 접근이 κ°€λŠ₯ν•˜λ‹€. - μœ„ν‚€ λ°±κ³Ό - μ‰½κ²Œ 예제λ₯Ό ν†΅ν•΄μ„œ μ„€λͺ…λ“œλ¦΄κ²Œμš”! μ•„λž˜ 사진과 같이 지ꡬ μ•ˆμ— μ„Έ λ‚˜λΌλ§Œ 있고 λͺ¨λ“  λ‚˜λΌμ™€ λ‚˜λΌμ˜ λ„μ‹œλ“€μ„ νƒμƒ‰ν•œλ‹€κ³  κ°€μ •ν•˜κ² μŠ΅λ‹ˆλ‹€. νƒμƒ‰ν•˜λŠ” 방법은 μ—¬λŸ¬κ°€μ§€κ°€ μžˆκ² μ§€λ§Œ λ¨Όμ € 지ꡬ에 μžˆλŠ” λ‚˜λΌλ₯Ό μ™Όμͺ½λΆ€ν„° μ–΄λ–€ λ„μ‹œλ“€μ΄ μžˆλŠ”μ§€ ν™•μΈν•˜κ³  λ„˜μ–΄κ°€λŠ” 방법은 DF.. 2021. 6. 27.
728x90
λ°˜μ‘ν˜•