π Computer Science
κ΅μ°©μν(Deadlock)
κ΅μ°©μν(Deadlock) λ μ΄μμ νλ‘μΈμ€κ° 곡μ μμμ 무νμ κΈ°λ€λ¦¬κ³ μκ³ κ³΅μ μμμ μ¬μ© μ€μΈ νλ‘μΈμ€λ μ§μ λκΈ° μ€μΈ νλ‘μΈμ€κ° μ§νλΌμΌλ§ λΉ μ Έλμ¬ μ μλ μν© 1. 4κ°μ§ 쑰건 μνΈ λ°°μ (Mutual Exclusion): ν λ²μ ν νλ‘μΈμ€λ§ μμ μ¬μ© μ μ μ λκΈ°(Hold & Wait): 곡μ μμμ λν μ κ·Ό κΆνμ κ°κ³ μλ νλ‘μΈμ€κ° λ€λ₯Έ μμμ λν μ κ·Ό κΆνμ μꡬ λΉμ μ (Non-preemptive): λ€λ₯Έ νλ‘μΈμ€κ° μμ μ κ·Ό κΆνμ κ°μ λ‘ λΉΌμμ μ μλ€. νν λκΈ°(Circular Wait): λ κ° μ΄μμ νλ‘μΈμ€κ° μμ μ κ·Όμ κΈ°λ€λ¦¬λλ° κ·Έ κ΄κ³μ μ¬μ΄ν΄ μ‘΄μ¬ 2. ν΄κ²°λ² μλ°© κΈ°λ²: 4κ°μ§ 쑰건 λΆμ ννΌ κΈ°λ²: κ΅μ°© μν λ°μ μ νΌν΄λκ°λ λ°©λ² μνμ μκ³ λ¦¬μ¦..
[Git] Git Flow
Git Gitμ μλ²λ₯Ό λΆμ°μμΌ κ΅¬μΆν μ μκ² νλ μννΈμ¨μ΄λ‘ μ§μ μ μ₯μλ₯Ό λ§λ€κ³ νμΌ, μ½λ λ±μ κ΄λ¦¬νλ μμ μ νλ€. GitHubλ GitμΌλ‘ κ΄λ¦¬νλ μλ£λ₯Ό λ€λ₯Έ μ¬λκ³Ό 곡μ νκ±°λ λ°±μ ν μ μλ μΉ μ¬μ΄νΈμ΄λ€. Git Flow κΈ°λ³Έ λΈλμΉλ 5κ°μ§λ₯Ό μ΄μΌκΈ°νλ€. feature > develop > release > hotfix > master λΈλμΉκ° μ‘΄μ¬νλ©° λ¨Έμ§ μμλ μμμ λ€λ‘ μ§νλλ€. release λΈλμΉμ hotfix λΈλμΉμ κ²½μ°, develop λΈλμΉμ μ€λ₯Έμͺ½μ μ‘΄μ¬νκΈ°μ λͺ¨λ develop λΈλμΉλ λ¨Έμ§λ₯Ό νλλ‘ κ΅¬μ±μ΄ λμ΄μλ€. 1) Master Branch μ νμΌλ‘ μΆμλ μ μλ λΈλμΉλ‘ λ°°ν¬(Release) μ΄λ ₯μ κ΄λ¦¬νκΈ° μν΄ μ¬μ©. μ¦, λ°°ν¬ κ°λ₯ν μνλ§μ κ΄..
[C++] νΈλΌμ΄(Trie)
νΈλΌμ΄(Trie) μ¬λ¬ λ¬Έμμ΄μ ν¨μ¨μ μΌλ‘ μ μ₯νκ³ νμνκΈ° μν νΈλ¦¬ ννμ μλ£κ΅¬μ‘°λ‘ μκ° λ³΅μ‘λλ O(n)μ΄λ€. κΈ°λ³Έ μ리 struct Trie { Trie* next[26]; bool finish; Trie() :finish(false) { for (int i = 0; i < 26; ++i) next[i] = NULL; } ~Trie() { for (int i = 0; i < 26; i++) if (next[i]) delete next[i]; } void insert(const char* key) { if (*key == 0) { finish = true; return; } int curr = *key - 'a'; if (next[curr] == NULL) next[curr] = new Trie(..
TDD(Test Driven Development)
TDD(Test Driven Development) ν μ€νΈκ° κ°λ°μ μ΄λμ΄ λκ°λ€. λ°λ³΅μ μΈ ν μ€νΈμ μμ μ ν΅ν΄ κ³ νμ§μ μννΈμ¨μ΄λ₯Ό νμμν¬ μ μλ€. κ°λ°μλ μꡬλλ μλ‘μ΄ κΈ°λ₯μ λν μλνλ ν μ€νΈ μΌμ΄μ€λ₯Ό μμ±νκ³ ν΄λΉ ν μ€νΈλ₯Ό ν΅κ³Όνλ κ°μ₯ κ°λ¨ν μ½λλ₯Ό μμ±νλ€. μΌλ¨ ν μ€νΈ ν΅κ³Όνλ μ½λλ₯Ό μμ±νκ³ μν©μ λ§κ² 리ν©ν λ§νλ κ³Όμ μ κ±°μΉλ€. μ₯μ μμ κ³Ό λμμ ν μ€νΈλ₯Ό μ§ννλ©΄μ μ€μκ°μΌλ‘ μ€λ₯ νμ μ΄ κ°λ₯νλ€. 짧μ κ°λ° μ£ΌκΈ°λ₯Ό ν΅ν΄ κ³ κ°μ μꡬμ¬ν λΉ λ₯΄κ² μμ©, νΌλλ°±μ΄ κ°λ₯νκ³ μ§ν μν© νμ μ΄ μ½λ€. μλν λꡬλ₯Ό μ΄μ©ν TDD ν μ€νΈμΌμ΄μ€λ₯Ό λ¨μ ν μ€νΈλ‘ μ¬μ©μ΄ κ°λ₯νλ€. λ¨μ κΈ°μ‘΄ κ°λ° νλ‘μΈμ€μ ν μ€νΈμΌμ΄μ€ μ€κ³κ° μΆκ°λλ―λ‘ μμ° λΉμ©μ΄ μ¦κ°νλ€. ν μ€νΈμ λ°©ν₯μ±, νλ‘μ νΈ ..
λμμ±(Concurrency)κ³Ό λ³λ ¬μ±(Parallelism)
λμμ±(Concurrency)κ³Ό λ³λ ¬μ±(Parallelism) 1. λμμ±(Concurrency) μ±κΈ μ½μ΄μμ λ©ν° μ€λ λλ₯Ό λμμν€κΈ° μν λ°©μ λ©ν° νμ€νΉμ μν΄ μ¬λ¬ κ°μ μ€λ λκ° λ²κ°μκ°λ©΄μ μ€νλλ μ±μ§μ λ§νλ€. κ° μ€λ λλ€μ΄ λ³λ ¬μ μΌλ‘ μ€νλλ κ²μ²λΌ 보μ΄μ§λ§ μ¬μ€μ λ²κ°μκ°λ©΄μ μ‘°κΈμ© μ€νλκ³ μλ κ²μ΄λ€. μ¦ λμμ μ€νλλ κ²μ²λΌ 보μ΄λ κ²μ΄λ€. λ 립μ μΌλ‘ μ€ννλ νλ‘μΈμ€λ€μ ꡬμ±νλ€. 1λͺ μ΄ 5κ°μ μμ μ λΉ λ₯Έ μκ°μ μ΄κ²μ κ² μ€ννλ€. λ¬Έλ§₯ κ΅νμ΄ λ°μνλ€. 2. λ³λ ¬μ±(Parallelism) λ©ν° μ½μ΄μμ λ©ν° μ€λ λλ₯Ό λμμν€λ λ°©μ ν κ° μ΄μμ μ€λ λλ₯Ό ν¬ν¨νλ κ° μ½μ΄λ€μ΄ λμμ μ€νλλ μ±μ§μ λ§νλ€. λ©ν° μ½μ΄μμλ λμμ± μ¬μ©μ΄ κ°λ₯νλ€. 5λͺ μ΄ 5κ°μ μμ μ λμ..
[C++] μ λμ¨ νμΈλ(Union-Find)
μ λμ¨ νμΈλ(Union-Find) μλ‘μμΈ μ§ν©λ€μ λΆν νμ¬ μ μ₯ν μ§ν© Union(): λ μ§ν©μ λ£¨νΈ λΆλͺ¨λ₯Ό ν©μΉ¨ Find(): μμ μ λ£¨νΈ λΆλͺ¨λ₯Ό μ°Ύμ κ³μν΄μ κ±°μ¬λ¬ μ¬λΌκ°λ κ³Όμ λ¬Έμ https://www.acmicpc.net/problem/1717 1717λ²: μ§ν©μ νν 첫째 μ€μ n(1≤n≤1,000,000), m(1≤m≤100,000)μ΄ μ£Όμ΄μ§λ€. mμ μ λ ₯μΌλ‘ μ£Όμ΄μ§λ μ°μ°μ κ°μμ΄λ€. λ€μ mκ°μ μ€μλ κ°κ°μ μ°μ°μ΄ μ£Όμ΄μ§λ€. ν©μ§ν©μ 0 a bμ ννλ‘ μ λ ₯μ΄ μ£Όμ΄μ§λ€. μ΄λ aκ° ν¬ν¨λμ΄ μλ μ§ν©κ³Ό, bκ° ν¬ν¨λμ΄ μλ μ§ν©μ ν©μΉλ€λ μλ―Έμ΄λ€. λ μμκ° κ°μ μ§ν©μ ν¬ν¨λμ΄ μλμ§λ₯Ό νμΈνλ μ°μ°μ 1 a bμ ννλ‘ μ λ ₯μ΄ μ£Όμ΄μ§λ€. μ΄λ aμ bκ° κ°μ μ§ν©μ ν¬ν¨λμ΄..