λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

전체 κΈ€67

[Week03] μ•Œκ³ λ¦¬μ¦˜ - μœ λ‹ˆμ˜¨ νŒŒμΈλ“œ 트리 탐색 μ•Œκ³ λ¦¬μ¦˜ - μœ λ‹ˆμ˜¨ νŒŒμΈλ“œ Union Find βœ… κ°œλ… / 원리 : λŒ€ν‘œμ μΈ 트리 μ•Œκ³ λ¦¬μ¦˜ : 합집합 μ°ΎκΈ°, μ„œλ‘œμ†Œ 집합 μ•Œκ³ λ¦¬μ¦˜ 이라고도 λΆ€λ₯Έλ‹€. μœ λ‹ˆμ˜¨ νŒŒμΈλ“œλŠ” 집합(set)을 ν•©ν•˜κΈ°μœ„ν•œ 연산이닀. 양뱑ν–₯ μ—°κ²° 리슀트λ₯Ό μ‚¬μš©ν•΄ 합집합 μ—°μ‚° κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜μ§€λ§Œ μ‹œμž‘ λ³΅μž‘λ„κ°€ μ•ˆμ’‹μ•„ 트리 ν˜•νƒœλ₯Ό ν™œμš©ν•œλ‹€. λΆ€λͺ¨λ₯Ό κ°€λ₯΄ν‚€λŠ” 트리처럼 링크λ₯Ό λ§Œλ“€μ–΄ 집합을 ν‘œν˜„ν•œλ‹€. ν•˜λ‚˜μ˜ νŠΈλ¦¬κ°€ ν•˜λ‚˜μ˜ set이며 트리의 parentsλ₯Ό μ°Ύμ•„ μ˜¬λΌκ°€ 루트λ₯Ό λ§Œλ‚˜λ©΄ λ£¨νŠΈκ°’μ΄ μ§‘ν•©μ˜ λŒ€ν‘œκ°’μ΄λ‹€. λ‘κ°œμ˜ 집합에 λ£¨νŠΈκ°’μ„ μ°Ύμ•„μ„œ(find) λ£¨νŠΈκ°’μ΄ λ‹€λ₯΄λ©΄ ν•˜λ‚˜μ˜ 트리둜 λ§Œλ“ λ‹€.(union) > 트리 높이 h만큼의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ°–λŠ”λ‹€. μ§‘ν•©μ˜ 합집합 μ‹œν‚¨λ‹€λŠ” κ°œλ…μ„ μƒκ°ν•˜λ©΄ 문제 ν’€λ•Œ ν—·κ°ˆλ €μ„œ 주어진 κ·Έλž˜ν”„μ˜ 루트λ₯Ό μ°ΎλŠ” .. 2022. 4. 20.
[Week02] μ•Œκ³ λ¦¬μ¦˜ - 큐 (feat. python) λͺ¨λ“ˆ : ν•¨μˆ˜,λ³€μˆ˜ λ˜λŠ” ν΄λž˜μŠ€λ“€μ„ λͺ¨μ•„놓은 파일 - 파일λͺ…이 λͺ¨λ“ˆλͺ…이 λœλ‹€. if __name__ == "__main__" 의 의미 πŸ‘‰ python은 cλ‚˜ java와 λ‹€λ₯΄κ²Œ 슀크립트 기반 인터프리터 μ–Έμ–΄λ‘œ νŠΉλ³„νžˆ μ‹œμž‘ 지점이 λͺ…μ‹œκ°€ λ˜μ–΄μžˆμ§€ μ•Šμ€ 언어이닀. κ·Έλž˜μ„œ νŠΉλ³„νžˆ λ³€μˆ˜λ₯Ό ν• λ‹Ήν•˜μ—¬ ν˜„μž¬ 슀트립트의 μ‹œμž‘μ μ΄ 어디인지 νŒλ‹¨ν•˜λŠ”λ° κ·Έ λ³€μˆ˜λ‘œμ„œ μ΄μš©ν•˜λŠ” 것이 __name__ 이닀. 파일 μ‹€ν–‰μ‹œμ—λŠ” __name__ λ³€μˆ˜μ— "__main__"을 μ €μž₯ν•˜κ²Œ λ˜μ§€λ§Œ ν•΄λ‹Ή λͺ¨λ“ˆμ΄ import 될 경우 λ³€μˆ˜μ— "λͺ¨λ“ˆλͺ…"이 λ“€μ–΄κ°€κΈ°λ•Œλ¬Έμ— if __name__ == "__main__" 문은 μ‹€ν–‰λ˜μ§€μ•ŠλŠ”λ‹€. __init__의 의미 πŸ‘‰ μƒμ„±μžμ˜ 의미 ( μ—¬κΈ°μ„œ selfλŠ” μΈμŠ€ν„΄μŠ€ μžμ‹ , λ©”μ†Œλ“œμ˜ μž„μ˜μ˜ 인수 μ •λ„μ˜ 의미λ₯Ό .. 2022. 4. 14.
[Week02] μ•Œκ³ λ¦¬μ¦˜ - 이뢄탐색 [Week02] μ•Œκ³ λ¦¬μ¦˜ ν‚€μ›Œλ“œ - 이뢄탐색, 뢄할정볡, μŠ€νƒ, 큐, μš°μ„ μˆœμœ„ 큐 검색 μ•Œκ³ λ¦¬μ¦˜ - μ„ ν˜•νƒμƒ‰ / 이뢄 탐색 이뢄탐색 정렬이 λ˜μ–΄μžˆλŠ” λ°°μ—΄μ—μ„œ νŠΉμ • 데이터λ₯Ό μ°ΎκΈ° μœ„ν•΄μ„œ λͺ¨λ“  데이터λ₯Ό 순차적으둜 ν™•μΈν•˜λŠ” λŒ€μ‹  νƒμƒ‰μ˜ λ²”μœ„λ₯Ό 절반으둜 μ€„μ—¬λ‚˜κ°€λŠ” 탐색 방법 이뢄탐색 μ‚¬μš©μ‹œ μ£Όμ˜μ‚¬ν•­ 주어진 배열은 μ •λ ¬λ˜μ–΄μžˆμ–΄μ•Όν•œλ‹€. λ¬΄ν•œ 루프에 λΉ μ§€μ§€μ•Šκ²Œ mid값을 잘 지정해쀀닀 μ°¨λ‘€λ‘œ 증가(ν˜Ήμ€ κ°μ†Œ)μ‹œν‚€λ©΄μ„œ ν’€μ–΄μ•Όν•˜λŠ” νƒμƒ‰λ¬Έμ œμ— 큰 수의 λ²”μœ„κ°€ 주어진닀면 이뢄탐색을 λ– μ˜¬λ €λ³΄μž. μ‹œκ°„λ³΅μž‘λ„ O(logN) βœ… 이뢄탐색 κ΅¬ν˜„ν•˜κΈ° while문을 μ΄μš©ν•˜μ—¬ κ΅¬ν˜„ def binary_serch(a,n_list) : st = 0 en = n-1 while st a : en = mid -1 else : st = mid + .. 2022. 4. 9.
[Week01] μ•Œκ³ λ¦¬μ¦˜ - μ •λ ¬01 μ •λ ¬01 βœ… 파이썬 λ‚΄μž₯ν•¨μˆ˜ arr.sort() : μ˜€λ¦„μ°¨μˆœ μ •λ ¬ arr.sort(reverse = True) : λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬ #λ°±μ€€11650 - keyκ°’μœΌλ‘œ μ •λ ¬ arr = [] for _ in range(int(input())): arr.append(list(map(int, input().split()))) arr.sort(key=lambda x:(x[0], x[1])) #x[0]의 크기λ₯Ό κΈ°μ€€μœΌλ‘œ μ •λ ¬, 값이 κ°™λ‹€λ©΄ x[1]으둜 비ꡐ for e in arr: print(str(e[0]) + " " + str(e[1])) βœ… 버블 μ •λ ¬ : μ„œλ‘œ μΈμ ‘ν•œ 두 μ›μ†Œλ₯Ό κ²€μ‚¬ν•˜μ—¬ μ •λ ¬ν•œλ‹€. (swap) μ‹œκ°„λ³΅μž‘λ„ O(N^2) def bubble_sort(arr): for i in range(len(arr) .. 2022. 4. 9.
[Week01] μ•Œκ³ λ¦¬μ¦˜ - μž¬κ·€ν•¨μˆ˜ [Week01] μ•Œκ³ λ¦¬μ¦˜ ν‚€μ›Œλ“œ - μ •μˆ˜λ‘ , λ°°μ—΄, λ¬Έμžμ—΄, μž¬κ·€ν•¨μˆ˜, μ •λ ¬, 완전탐색, μ‹œκ°„λ³΅μž‘λ„ μž¬κ·€ν•¨μˆ˜ μž‘μ€ 문제의 해결법을 μ‚¬μš©ν•΄μ„œ 더 큰 문제λ₯Ό ν‘Όλ‹€ 절차적 지ν–₯적 사고λ₯Ό 버리고 μˆ˜ν•™μ  κ·€λ‚©λ°©μ‹μœΌλ‘œ μƒκ°ν•˜κΈ° 점화식(λ‘κ°œμ˜ ν•­ 사이에 μ„±λ¦½ν•˜λŠ” 관계)κ³Ό μ΄ˆν•­ κ΅¬ν•˜κΈ° loop(반볡문)와 recursion(μž¬κ·€)은 μ„œλ‘œ λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€ μž¬κ·€ν•¨μˆ˜λŠ” μžκΈ°μžμ‹ μ„ λΆ€λ₯΄λŠ” ν•¨μˆ˜μ΄κΈ° λ•Œλ¬Έμ— 절차적으둜 μ½”λ“œλ₯Ό μ«’μ•„κ°€λ©΄ ν—·κ°ˆλ¦΄ 수 밖에 μ—†λ‹€. κ·€λ‚©λ²•μ μœΌλ‘œ 생각할 수 μžˆλ‹€λ©΄ μ΄μƒμ μ΄μ§€λ§Œ, νž˜λ“€λ‹€λ©΄ 처음 λΆˆλ €λ˜ ν•¨μˆ˜μ™€ κ·Έ μ•ˆμ—μ„œ λΆ€λ₯Έ ν•¨μˆ˜, κ·Έ μ•ˆμ—μ„œ λΆ€λ₯Έ ν•¨μˆ˜ λ‹€λ‹€λ₯Έ ν•œμˆ˜λΌκ³  μƒκ°ν•˜κ³  ν•¨μˆ˜μΈμžμ™€ depthλ₯Ό μ μ–΄κ°€λ©΄μ„œ μ–΄λ–»κ²Œ λŒμ•„κ°€λŠ”μ§€ ν•˜λ‚˜ν•˜λ‚˜ μ«“μ•„κ°€λŠ” 것도 μ΄ν•΄ν•˜λŠ” 방법 쀑 ν•˜λ‚˜μ΄λ‹€. κ΅¬ν˜„λ°©λ²• 1. 문제의 μ •μ˜λ₯Ό μ •.. 2022. 4. 7.
[SW사관학ꡐ μ •κΈ€] λ‚˜λ₯Ό λŒμ•„λ³΄λŠ” μ‹œκ°„ 에세이 과거에 λŒ€ν•œ μ„±μ°° μ§€λ‚˜μ˜¨ μ‹œκ°„μ„ 돌이켜보면 λ‚˜λŠ” λ„μ „ν•˜κΈ°λ³΄λ‹¨ 항상 μ•ˆμ •μ μΈ μ„ νƒν–ˆμ—ˆλ‹€. λ‹Ήμ‹œμ—λŠ” λ‚΄κ°€ μ•ˆμ •μ μΈ 삢을 μΆ”κ΅¬ν•˜λŠ” μ‚¬λžŒμ΄λΌ μƒκ°ν–ˆμ—ˆλŠ”λ° μ§€κΈˆ λ˜λŒμ•„λ³΄λ©΄ μ‹€νŒ¨ν•˜λŠ”κ²Œ λ‘λ €μ›Œμ„œ μ•ˆμ •μ μΈ 것을 μ’‹μ•„ν•œλ‹€κ³  슀슀둜 합리화λ₯Ό ν–ˆλ˜κ²ƒκ°™λ‹€. κ°œλ°œμžκ°€ λ˜κ³ μ‹Άλ‹€λŠ” 생각은 κ³„μ†ν•˜μ˜€μœΌλ‚˜ μ°”λŸ¬λ³΄κΈ°μ‹μœΌλ‘œλ§Œ ν•˜κ³  μž¬λŒ€λ‘œ λ„μ „ν•˜μ§€ λͺ»ν•œμ±„ λͺ‡λ…„이 ν˜λ €λ‹€. νšŒμ‚¬λ₯Ό 관두고 정글에 μž…μ†Œν•œκ²ƒμ€ λ‚˜μ—κ²Œ 큰 λ„μ „μ΄μ˜€λ‹€. λ‚˜μ—κ²Œ 주어진 μ΄λŸ¬ν•œ 기회λ₯Ό μ†Œμ€‘νžˆ μ—¬κΈ°κ³  ν›„νšŒν•˜μ§€ μ•Šλ„λ‘ μ΅œμ„ μ„ 닀할것이닀. 5κ°œμ›” λ™μ•ˆ μ–»μ–΄κ°€κ³  싢은 것 πŸ€” 정글을 톡해 λ§Žμ€ 것듀을 μ–»μ–΄κ°ˆ 수 μžˆκ² μ§€λ§Œ κ°€μž₯ μ€‘μš”ν•œκ²ƒμ€ κ°œλ°œμžλ‘œμ„œ 쒋은 μŠ΅κ΄€μ„ λ“€μ΄λŠ”κ²ƒμ΄λΌ μƒκ°ν•œλ‹€. 쒋은 ν™˜κ²½μ—μ„œ κ³΅λΆ€ν•˜λŠ” 방식, 개발자적 사고 λ“± 쒋은 μŠ΅κ΄€μ„ λ“€μ—¬μ„œ μ •κΈ€ 후에도 μ§€μ†μ μœΌλ‘œ λ°œμ „κ°€λŠ₯ν•œ.. 2022. 4. 2.