2026-1-Algorithm-assignments: 코드 가독성 향상을 위한 주석 추가
주요 변경사항은 `matrix multiplication` 및 `binary search` 함수에 대한 주석을 추가하여 코드의 명확성을 높인 것입니다. 이 작업은 2026년 3월 17일에 이루어졌습니다.
2026-1-Algorithm-assignments: 코드 가독성 향상을 위한 주석 추가
주요 변경사항은 matrix multiplication 및 binary search 함수에 대한 주석을 추가하여 코드의 명확성을 높인 것입니다. 이 작업은 2026년 3월 17일에 이루어졌습니다.
요약
이번 커밋은 Week02_problem-1 디렉토리 내 두 개의 파이썬 파일(1.4.matrixmult_problem.py, 1.5.binsearch_problem.py)에 대한 코드 주석을 강화하는 내용을 담고 있습니다. 복잡한 알고리즘의 동작 방식을 더 쉽게 이해할 수 있도록 상세한 설명을 추가했습니다.
배경 및 목적
알고리즘 문제 풀이 과정에서 작성된 코드들이 시간이 지났을 때나 다른 사람이 볼 때 이해하기 어렵다는 점을 인지했습니다. 특히, matrix multiplication과 binary search와 같이 수학적 원리가 내포된 알고리즘은 코드만으로는 정확한 의도를 파악하기 어려울 수 있습니다. 따라서 코드의 가독성과 유지보수성을 향상시키기 위해 각 함수의 동작 원리, 변수의 의미, 로직 흐름 등을 명확하게 설명하는 주석을 추가할 필요성을 느꼈습니다.
구현 내용
총 23라인의 코드가 추가되었고 11라인이 삭제되었습니다. 변경 사항은 주로 함수 내부에 상세한 주석을 추가하는 방식입니다.
변경된 파일 목록
Week02_problem-1/1.4.matrixmult_problem.pyWeek02_problem-1/1.5.binsearch_problem.py
주요 변경사항 상세 설명
Week02_problem-1/1.5.binsearch_problem.py
추가 라인: 19
삭제 라인: 7
주요 변경:
binsearch함수의low,high,mid변수의 의미와 범위를 명확히 설명하는 주석을 추가했습니다.while low <= high:조건이 탐색 구간이 사라졌을 때 종료됨을 설명하는 주석을 추가했습니다.mid = (low + high) // 2연산이 정수 나눗셈을 사용하여 중앙 인덱스를 계산하며, 구간의 홀짝에 따라mid가 어떤 인덱스를 가리키는지 설명했습니다.S[mid] == x조건에서mid를 반환하는 이유를 명시했습니다.S[mid] < x조건에서low = mid + 1로 업데이트하는 이유와 탐색 범위의 변화를 설명하는 주석을 추가했습니다.else(즉,S[mid] > x) 조건에서high = mid - 1로 업데이트하는 이유와 탐색 범위에서S[mid]를 배제하는 과정을 설명하는 주석을 추가했습니다.- 알고리즘의 수렴 과정에 대한 설명을 덧붙였습니다.
# S의 유효 인덱스 범위가 0부터 n-1이므로 low = 0 high = n - 1 while low <= high: # 이 조건이 깨지면 탐색 구간이 수렴하다가 사라진 것. 배열에서 x를 못 찾았으므로 -1을 반환. # mid는 가운데 원소를 가리키는 인덱스가 되길 원함. 인덱스가 소수점 아래로 가면 안되니 정수 나눗셈 // 사용. mid = (low + high) // 2 # 현재 탐색 구간 [low, high]의 길이가 홀수면 정중앙 인덱스, # 짝수면 가운데 두 인덱스 중 왼쪽 인덱스가 mid가 된다. if S[mid] == x: # 가운데 원소가 x와 같으면 정답이므로 mid 인덱스 반환 if S[mid] < x: # 가운데 원소가 x보다 작으면 오른쪽 구간을 찾아봐야 함 # 탐색 범위의 low 값을 S[mid]의 바로 오른칸 인덱스로 해준다. 즉, low를 mid + 1로 업데이트. low = mid + 1 else: # 가운데 원소가 x보다 크면 왼쪽 구간을 찾아봐야 함 # 현재 탐색 구간 [low, high]의 길이가 짝수라면 mid는 가운데 두 원소 중 왼쪽 원소의 인덱스고 S[mid]는 x가 아니었던 것이고 # 현재 탐색 구간 [low, high]의 길이가 홀수라면 mid가 가운데 원소의 인덱스이고 마찬가지로 S[mid]는 x가 아니었던 것이다. 따라서 S[mid]는 탐색 범위에서 배제되어야 한다. # 따라서 S[mid]는 탐색범위에서 배제. 탐색범위의 high 값을 S[mid]의 바로 왼칸 인덱스로 해준다. # high를 mid -1로 해줌 high = mid - 1 # 위 과정에서 low와 high가 갱신되며 점점 탐색범위가 x를 향해 수렴된다.
Week02_problem-1/1.4.matrixmult_problem.py
추가 라인: 4
삭제 라인: 4
주요 변경:
matrixmult함수의 삼중 루프 구조에 대한 설명을 추가했습니다.- 각 루프가
A의 행,B의 열, 그리고A의 행과B의 열의 원소 곱셈 및 누적에 해당함을 명시했습니다.
for i in range(n): # A의 0행부터 n-1행까지 for j in range(n): # B의 0열부터 n-1열까지 for k in range(n): # A의 i행과 B의 j열의 각각의 k번째 원소를 뽑아서 C[i][j] += A[i][k] * B[k][j] # 곱하고 결과를 C의 i행 j열에 누적하여 C[i][j]을 완성
기술적 의사결정
이 커밋은 새로운 기술이나 라이브러리 도입 없이 기존 코드의 가독성을 높이는 데 집중했습니다. 따라서 별도의 기술적 의사결정 사항은 없습니다.
배운 점 및 개선점
- 배운 점:
- 알고리즘 코드에 상세한 주석을 추가하는 작업이 코드 이해도를 얼마나 높일 수 있는지 체감했습니다. 특히, 복잡한 로직이나 수학적 개념이 포함된 부분은 명확한 설명이 필수적입니다.
- 주석을 작성하면서 오히려 제가 코드를 완벽하게 이해하지 못했던 부분을 발견하기도 했습니다.
- 개선점:
- 향후에도 새로운 기능을 추가하거나 기존 코드를 수정할 때, 해당 변경 사항에 대한 충분한 설명을 주석으로 남기는 습관을 들여야겠습니다.
- 단순히 코드의 기능을 설명하는 것을 넘어, 왜 그렇게 구현했는지에 대한 맥락이나 의도를 함께 기록하면 더 좋을 것입니다.
- 다음 단계 계획:
- 다른
Week02_problem-1의 파일들도 유사하게 주석을 보강할 예정입니다. - 더 나아가, 실제 프로젝트에서는
README.md파일이나 별도의 문서에 주요 알고리즘에 대한 설명을 추가하는 것을 고려해야 합니다.
- 다른
참고 자료
- (해당 사항 없음)