🎮 주제 : Git 협업 프로세스와 이분 탐색의 논리적 구조 이해
태그 : #C++ #알고리즘 #이분탐색 #Git #브랜치 #충돌해결 #프로그래밍기초
📌 학습 요약
- Git 브랜치와 협업 : 메인 코드에 영향을 주지 않고 독립적으로 기능을 개발하는 Branch의 개념과, 동일한 코드를 수정했을 때 발생하는 **Conflict(충돌)**의 해결 메커니즘 숙지
- 이분 탐색(Binary Search) : 반드시 정렬된 데이터에서 중간값(Pivot)을 기준으로 탐색 범위를 절반씩 줄여나가는 $O(\log n)$ 효율의 탐색 알고리즘 정립
- 제어문의 명확한 구분 : 함수 자체를 끝내는 return과 현재 루프만 탈출하는 break의 차이를 이해하고 알고리즘 목적에 맞는 적절한 키워드 선택 방법 습득
- 투 포인터(Two Pointer)의 실체 : 메모리 주소값이 아닌, 배열의 인덱스를 가리키는 두 개의 변수(left, right)를 조작하여 범위를 제어하는 기법의 개념 정립
🛠 주요 코드 및 구현 상세
1. 이분 탐색(Binary Search) 핵심 로직
while (left <= right) {
// 1. 기준점(pivot) 설정: 검색 범위의 중간 인덱스
int pivot = (left + right) / 2;
// 2. 일치 여부 확인
if (list[pivot] == key) {
cout << "Found the key" << endl;
cout << "Index : " << pivot << endl;
return; // 찾았으므로 함수 전체를 즉시 종료
}
// 3. 범위 축소: key가 pivot보다 크면 오른쪽 영역 탐색
else if (list[pivot] < key) {
left = pivot + 1;
}
// 4. 범위 축소: key가 pivot보다 작으면 왼쪽 영역 탐색
else {
right = pivot - 1;
}
}
// 루프를 다 돌아도 못 찾은 경우
cout << "Not key found" << endl;
✅ 주요 문법 및 개념 정리
키워드 특징 활용 사례
| return | 함수 실행을 즉시 중단하고 호출부로 복귀 | 탐색 성공 시 추가 연산 방지 |
| break | 가장 가까운 반복문 하나를 탈출 | 특정 조건 충족 시 루프만 중단 |
| Continue | 현재 반복의 남은 코드를 건너뛰고 다음 반복으로 진행 | 특정 데이터만 제외하고 처리할 때 사용 |
| pivot | 탐색의 기준이 되는 중간 지점 | 이분 탐색, 퀵 정렬의 성능 결정 요소 |
| Conflict | <<<<<<<, =======, >>>>>>> 표시 발생 | 병합 시 소스 코드 불일치 수동 해결 필요 |
💡 Git 충돌 해결 프로세스
- 충돌 발생 확인 및 해당 파일 열기
- Git이 남긴 마커를 기준으로 남길 코드를 선택하고 마커 삭제
- git add [파일명]으로 해결 완료 표시
- git commit을 통해 병합 완료
✨ 느낀 점
- return과 break의 차이를 모호하게 알고 있었으나, 함수 종료와 반복문 종료라는 명확한 경계를 정리하여 논리적 오류를 예방하게 됨
- Git의 충돌은 에러가 아니라 협업 과정에서 발생하는 자연스러운 대화 과정임을 이해하게 되었고, 마커를 직접 수정하는 방식이 익숙해짐
- 주석을 간결하고 명확하게 다는 작은 습관이 복잡한 알고리즘의 흐름을 파악하는 데 큰 힘이 된다는 것을 다시금 느낌
- 추상적이었던 pivot의 개념이 이분 탐색의 '기준점' 역할을 수행하는 것을 직접 코딩하며 명확히 체득함
'SBS아카데미 > 게임프로그래밍' 카테고리의 다른 글
| [C++ - TIL] 합병 정렬(Merge Sort)의 논리 구조와 조건식 설계 능력 (0) | 2025.08.22 |
|---|---|
| [C++ - TIL] 퀵 정렬(Quick Sort)의 재귀적 분할과 포인터 제어 (0) | 2025.08.21 |
| [C++ - TIL] 분할 정복의 원리와 효율적인 알고리즘 설계 전략 (0) | 2025.08.19 |
| [C++ - TIL] 에라토스테네스의 체를 이용한 효율적인 소수 판별 구현 (0) | 2025.08.18 |
| [C++ - TIL] 삽입 정렬의 메커니즘과 유클리드 호제법의 재귀적 구현 (0) | 2025.08.14 |