[Git] Git Flow
Β·
πŸ“ Computer Science/✏
Git Git은 μ„œλ²„λ₯Ό λΆ„μ‚°μ‹œμΌœ ꡬ좕할 수 있게 ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄λ‘œ 지역 μ €μž₯μ†Œλ₯Ό λ§Œλ“€κ³  파일, μ½”λ“œ 등을 κ΄€λ¦¬ν•˜λŠ” μž‘μ—…μ„ ν•œλ‹€. GitHubλŠ” Git으둜 κ΄€λ¦¬ν•˜λŠ” 자료λ₯Ό λ‹€λ₯Έ μ‚¬λžŒκ³Ό κ³΅μœ ν•˜κ±°λ‚˜ λ°±μ—…ν•  수 μžˆλŠ” μ›Ή μ‚¬μ΄νŠΈμ΄λ‹€. Git Flow κΈ°λ³Έ λΈŒλžœμΉ˜λŠ” 5가지λ₯Ό μ΄μ•ΌκΈ°ν•œλ‹€. feature > develop > release > hotfix > master λΈŒλžœμΉ˜κ°€ μ‘΄μž¬ν•˜λ©° 머지 μˆœμ„œλŠ” μ•žμ—μ„œ λ’€λ‘œ μ§„ν–‰λœλ‹€. release λΈŒλžœμΉ˜μ™€ hotfix 브랜치의 경우, develop 브랜치의 였λ₯Έμͺ½μ— μ‘΄μž¬ν•˜κΈ°μ— λͺ¨λ‘ develop λΈŒλžœμΉ˜λ„ 머지λ₯Ό ν•˜λ„λ‘ ꡬ성이 λ˜μ–΄μžˆλ‹€. 1) Master Branch μ œν’ˆμœΌλ‘œ μΆœμ‹œλ  수 μžˆλŠ” 브랜치둜 배포(Release) 이λ ₯을 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©. 즉, 배포 κ°€λŠ₯ν•œ μƒνƒœλ§Œμ„ κ΄€..
[C++] 트라이(Trie)
Β·
πŸ“ Computer Science/✏ Algorithm
트라이(Trie) μ—¬λŸ¬ λ¬Έμžμ—΄μ„ 효율적으둜 μ €μž₯ν•˜κ³  νƒμƒ‰ν•˜κΈ° μœ„ν•œ 트리 ν˜•νƒœμ˜ 자료ꡬ쑰둜 μ‹œκ°„ λ³΅μž‘λ„λŠ” O(n)이닀. κΈ°λ³Έ 원리  struct Trie{ Trie* next[26]; bool finish; Trie() :finish(false) { for (int i = 0; i insert(key + 1); } bool find(const char* key) { if (*key == 0) return finish; int curr = *key - 'a'; if (next[curr] != NULL) return next[curr]->find(key + 1); return false; }}; λ¬Έμ œ https://www.acmicpc.net/problem/5670 5670번: νœ΄λŒ€ν° μžνŒνœ΄λŒ€..
객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°(Object Oriented Programming)
Β·
πŸ“ Language/✏ Language
1. 절차적 ν”„λ‘œκ·Έλž˜λ°(Procedural Programming) 절차적 ν”„λ‘œκ·Έλž˜λ°μ΄λž€ 물이 μœ„μ—μ„œ μ•„λž˜λ‘œ 흐λ₯΄λŠ” κ²ƒμ²˜λŸΌ 순차적인 μ²˜λ¦¬κ°€ μ€‘μš”μ‹œλ˜λ©° ν”„λ‘œκ·Έλž¨ 전체가 유기적으둜 μ—°κ²°λ˜λ„λ‘ λ§Œλ“œλŠ” ν”„λ‘œκ·Έλž˜λ° 기법이닀. μ–Έμ–΄: C 1) μž₯점 μ»΄ν“¨ν„°μ˜ μž‘μ—… 처리 방식과 μœ μ‚¬ν•˜κΈ° λ•Œλ¬Έμ— 객체지ν–₯ μ–Έμ–΄λ₯Ό μ‚¬μš©ν•˜λŠ” 것에 λΉ„ν•΄ 더 빨리 μ²˜λ¦¬λ˜μ–΄ μ‹œκ°„μ μœΌλ‘œ μœ λ¦¬ν•˜λ‹€. 2) 단점 ν”„λ‘œκ·Έλž¨ 뢄석이 μ–΄λ €μ›Œ 디버깅이 νž˜λ“€λ‹€. μœ μ§€ λ³΄μˆ˜λ‚˜ μ½”λ“œμ˜ μˆ˜μ •μ΄ μ–΄λ ΅λ‹€. 2. 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°(Object Oriented Programming) 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λž€ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ ν•„μš”ν•œ 데이터λ₯Ό μΆ”μƒν™”μ‹œμΌœ μƒνƒœ(속성, μ• νŠΈλ¦¬λ·°νŠΈ)와 ν–‰μœ„(μ—°μ‚°)λ₯Ό 가진 ν•˜λ‚˜μ˜ λ…λ¦½λœ 객체λ₯Ό λ§Œλ“€κ³  κ·Έ 객체듀 κ°„μ˜ 유기적인 μƒν˜Έμž‘μš©μ„ 톡해 λ‘œμ§μ„ ꡬ..
TDD(Test Driven Development)
Β·
πŸ“ Computer Science/✏
TDD(Test Driven Development) ν…ŒμŠ€νŠΈκ°€ κ°œλ°œμ„ μ΄λŒμ–΄ λ‚˜κ°„λ‹€. 반볡적인 ν…ŒμŠ€νŠΈμ™€ μˆ˜μ •μ„ 톡해 κ³ ν’ˆμ§ˆμ˜ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό νƒ„μƒμ‹œν‚¬ 수 μžˆλ‹€. κ°œλ°œμžλŠ” μš”κ΅¬λ˜λŠ” μƒˆλ‘œμš΄ κΈ°λŠ₯에 λŒ€ν•œ μžλ™ν™”λœ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μž‘μ„±ν•˜κ³  ν•΄λ‹Ή ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όν•˜λŠ” κ°€μž₯ κ°„λ‹¨ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€. 일단 ν…ŒμŠ€νŠΈ ν†΅κ³Όν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  상황에 맞게 λ¦¬νŒ©ν† λ§ν•˜λŠ” 과정을 κ±°μΉœλ‹€. μž₯점 μž‘μ—…κ³Ό λ™μ‹œμ— ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ μ‹€μ‹œκ°„μœΌλ‘œ 였λ₯˜ νŒŒμ•…μ΄ κ°€λŠ₯ν•˜λ‹€. 짧은 개발 μ£ΌκΈ°λ₯Ό 톡해 고객의 μš”κ΅¬μ‚¬ν•­ λΉ λ₯΄κ²Œ 수용, ν”Όλ“œλ°±μ΄ κ°€λŠ₯ν•˜κ³  진행 상황 νŒŒμ•…μ΄ 쉽닀. μžλ™ν™” 도ꡬλ₯Ό μ΄μš©ν•œ TDD ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€λ₯Ό λ‹¨μœ„ ν…ŒμŠ€νŠΈλ‘œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€. 단점 κΈ°μ‘΄ 개발 ν”„λ‘œμ„ΈμŠ€μ— ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€ 섀계가 μΆ”κ°€λ˜λ―€λ‘œ 생산 λΉ„μš©μ΄ μ¦κ°€ν•œλ‹€. ν…ŒμŠ€νŠΈμ˜ λ°©ν–₯μ„±, ν”„λ‘œμ νŠΈ ..
λ™μ‹œμ„±(Concurrency)κ³Ό 병렬성(Parallelism)
Β·
πŸ“ Computer Science/✏ OS
λ™μ‹œμ„±(Concurrency)κ³Ό 병렬성(Parallelism) 1. λ™μ‹œμ„±(Concurrency) μ‹±κΈ€ μ½”μ–΄μ—μ„œ λ©€ν‹° μŠ€λ ˆλ“œλ₯Ό λ™μž‘μ‹œν‚€κΈ° μœ„ν•œ 방식 λ©€ν‹° νƒœμŠ€ν‚Ήμ„ μœ„ν•΄ μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œκ°€ λ²ˆκ°ˆμ•„κ°€λ©΄μ„œ μ‹€ν–‰λ˜λŠ” μ„±μ§ˆμ„ λ§ν•œλ‹€. 각 μŠ€λ ˆλ“œλ“€μ΄ λ³‘λ ¬μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ 사싀은 λ²ˆκ°ˆμ•„κ°€λ©΄μ„œ μ‘°κΈˆμ”© μ‹€ν–‰λ˜κ³  μžˆλŠ” 것이닀. 즉 λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” 것이닀. λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ“€μ„ κ΅¬μ„±ν•œλ‹€. 1λͺ…이 5개의 μž‘μ—…μ„ λΉ λ₯Έ μ‹œκ°„μ— 이것저것 μ‹€ν–‰ν•œλ‹€. λ¬Έλ§₯ κ΅ν™˜μ΄ λ°œμƒν•œλ‹€. 2. 병렬성(Parallelism) λ©€ν‹° μ½”μ–΄μ—μ„œ λ©€ν‹° μŠ€λ ˆλ“œλ₯Ό λ™μž‘μ‹œν‚€λŠ” 방식 ν•œ 개 μ΄μƒμ˜ μŠ€λ ˆλ“œλ₯Ό ν¬ν•¨ν•˜λŠ” 각 코어듀이 λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” μ„±μ§ˆμ„ λ§ν•œλ‹€. λ©€ν‹° μ½”μ–΄μ—μ„œλ„ λ™μ‹œμ„± μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€. 5λͺ…이 5개의 μž‘μ—…μ„ λ™μ‹œ..
[C++] μœ λ‹ˆμ˜¨ νŒŒμΈλ“œ(Union-Find)
Β·
πŸ“ Computer Science/✏ Algorithm
μœ λ‹ˆμ˜¨ νŒŒμΈλ“œ(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κ°€ 같은 집합에 ν¬ν•¨λ˜μ–΄..