← 개발 로그 목록

2026-1-Algorithm-assignments: 코드 가독성 향상을 위한 주석 추가

/ 7분 분량 / 개발 로그

주요 변경사항은 `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.py
  • Week02_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 파일이나 별도의 문서에 주요 알고리즘에 대한 설명을 추가하는 것을 고려해야 합니다.

참고 자료

  • (해당 사항 없음)