공학계열 탐구보고서 주제 예시: 탐색 방법을 직접 비교하기
같은 목록에서 두 탐색 방법을 비교하고 확인 횟수·평균·빈 입력·중복값·정렬 조건을 검증합니다.
목차
- 주제 후보를 입력·출력·제약으로 바꾸기
- 셀 단위가 아니라 무엇을 세는지 정의하기
- 14를 찾는 과정을 직접 추적하기
- 모든 목표값의 결과와 평균 계산
- 오류가 생기거나 해석이 과해질 때
- 후속 탐구와 참고 자료
핵심 요약
- 측정 단위는 확인한 원소 수
- 8개 목표값의 평균과 예외 조건
- 실제 실행 시간과 결과 범위 구분
공학 탐구 주제는 ‘어떤 기술이 좋은가’보다 어떤 조건에서 무엇을 줄이거나 개선할 것인가로 정하면 검증하기 쉽습니다. 여기서는 정렬된 숫자 목록에서 값을 찾는 두 방법을 비교합니다. 실제 서비스 성능 실험이 아니라, 직접 추적하고 계산할 수 있도록 구성한 교육용 사례입니다.
1. 주제 후보를 입력·출력·제약으로 바꾸기
- 검색 방법 비교: 입력은 오름차순 숫자 목록과 찾을 값, 출력은 발견 여부와 확인한 원소 수입니다. 정렬에 든 작업은 이번 측정에서 제외합니다.
- 알림 묶음 규칙: 입력은 직접 만든 알림 시각 목록, 출력은 묶음 개수와 가장 오래 기다린 시간입니다. 알림을 줄이면 기다림이 늘어나는지 규칙별로 비교할 수 있습니다. 실제 사용자의 집중력 향상을 측정했다고 말하지 않습니다.
- 교실 배치 비교: 입력은 가상의 좌석 좌표와 이동 목적지, 출력은 정한 거리 규칙으로 계산한 경로 길이입니다. 실제 통행 안전이나 혼잡도를 입증하는 실험과는 구분합니다.
이번에는 첫 번째 후보를 끝까지 진행합니다. 질문은 ‘같은 정렬 목록에서 목표값에 따라 두 탐색 방법의 확인 횟수는 어떻게 달라지는가?’입니다. 한 목표값만 유리하게 선택하지 않도록 목록 안의 모든 값과 목록에 없는 값도 포함합니다.
2. 셀 단위가 아니라 무엇을 세는지 정의하기
목록은 2, 4, 6, 8, 10, 12, 14, 16입니다. 앞에서 찾기는 첫 원소부터 목표값과 같은지 확인하고 발견하면 멈춥니다. 없으면 끝까지 확인합니다. 범위를 줄여 찾기는 현재 범위의 가운데 인덱스를 내림하여 그 원소를 확인하고, 목표보다 작으면 오른쪽 범위, 크면 왼쪽 범위로 좁힙니다. 두 방법 모두 확인한 원소 하나를 1회로 셉니다.
이 수치는 프로그래밍 언어의 비교 연산자 실행 횟수나 초 단위 실행 시간이 아닙니다. 입력 검증, 정렬, 메모리 사용량도 포함하지 않습니다. 같은 단위를 정해야 결과를 공정하게 비교할 수 있습니다. 아래 부속 코드의 각 반복이 남기는 확인 기록을 손으로도 대조할 수 있습니다.
재현용 Python 코드 받기: 파일을 저장한 뒤 Python 3에서 python search_comparison.py로 실행하면 목표값별 추적 결과와 평균이 출력됩니다. 외부 패키지 설치나 인터넷 접속은 필요하지 않습니다.
3. 14를 찾는 과정을 직접 추적하기
- 앞에서 찾기: 2 → 4 → 6 → 8 → 10 → 12 → 14를 확인합니다. 7회에 발견합니다.
- 범위를 줄여 찾기: 인덱스 0~7의 가운데는 3이므로 8을 확인합니다. 오른쪽 4~7의 가운데 5에서 12를 확인합니다. 다시 오른쪽 6~7의 가운데 6에서 14를 확인합니다. 총 3회입니다.
14만 보고 ‘항상 세 배 가까이 빠르다’고 결론내릴 수 없습니다. 2를 찾으면 앞에서 찾기는 1회, 범위를 줄여 찾기는 8 → 4 → 2의 3회이기 때문입니다. 원소 확인 횟수가 작다는 것과 모든 실제 환경에서 더 빠르다는 것은 다른 주장입니다.
4. 모든 목표값의 결과와 평균 계산
- 목표 2: 앞에서 찾기 1회 / 범위를 줄여 찾기 3회
- 목표 4: 2회 / 2회
- 목표 6: 3회 / 3회
- 목표 8: 4회 / 1회
- 목표 10: 5회 / 3회
- 목표 12: 6회 / 2회
- 목표 14: 7회 / 3회
- 목표 16: 8회 / 4회
목록의 각 값을 정확히 한 번씩 찾는 조건에서 평균 확인 횟수는 앞에서 찾기 (1+2+3+4+5+6+7+8)÷8 = 4.5회, 범위를 줄여 찾기 (3+2+3+1+3+2+3+4)÷8 = 2.625회입니다. 실제 이용자가 각 값을 같은 빈도로 찾는다는 통계는 아닙니다. 특정 값이 자주 선택되면 그 빈도로 가중한 평균을 별도로 구해야 합니다.
목록에 없는 1을 찾으면 각각 8회와 3회를 확인하고 ‘없음’을 반환합니다. 빈 목록은 두 방법 모두 0회이며 결과는 ‘없음’입니다. [2, 2, 4]에서 2를 찾으면 이 구현은 각각 인덱스 0과 1을 반환합니다. 둘 다 값을 찾았지만 ‘첫 번째 위치’를 찾는 요구에는 두 번째 구현을 그대로 사용할 수 없습니다. 인덱스는 0부터 셉니다.
5. 오류가 생기거나 해석이 과해질 때
정렬되지 않은 입력: 범위를 줄이는 방법은 정렬을 전제로 합니다. 부속 코드에서는 정렬되지 않은 목록을 오류로 거절합니다. 이 검증 과정에서 목록을 읽는 비용은 위 횟수에 포함하지 않습니다. 실제 시스템을 비교하려면 입력 검증과 정렬까지 포함한 전체 비용도 측정해야 합니다.
측정값이 예상과 다름: 가운데를 올림했는지, 시작 인덱스를 1로 셌는지, 동등 비교와 대소 비교를 각각 횟수로 셌는지 먼저 확인하세요. 다른 규칙의 결과가 틀렸다고 단정하기보다 규칙부터 맞춥니다. 소수점은 평균에서 생겼으며 한 번의 탐색이 원소 일부를 확인한다는 뜻은 아닙니다.
결론 예시: ‘정렬된 원소 8개의 각 값을 한 번씩 찾는 조건에서 범위를 줄이는 방법의 평균 확인 횟수가 작았다. 다만 앞쪽 목표값에서는 앞에서 찾기가 유리할 수 있고, 정렬·검증 비용과 실제 실행 시간은 비교하지 않았다.’
6. 후속 탐구와 참고 자료
후속 탐구에서는 목록 크기를 4·8·16으로 바꾸고, 전체 값 균등 검색과 앞쪽 값 집중 검색을 따로 비교해 보세요. 한 번에 조건 하나를 바꾸고 목표값 목록을 남기면 결과를 재현하기 쉽습니다. 학교 과제에 코드를 제출한다면 직접 작성한 부분과 참고한 부분을 구분하고, 실행 환경과 오류 처리도 함께 적습니다.
Python의 bisect 공식 문서는 정렬 목록에서 삽입 위치를 찾는 기능을 설명합니다. 위 교육용 구현과는 반환값과 비교 방식이 같지 않으므로 결과를 그대로 혼동하지 마세요. 산술평균의 함수 정의는 statistics.mean 공식 문서에서 확인할 수 있습니다. 문서 확인일: 2026-09-21. 이 글의 입력값·추적 결과·코드는 설명을 위해 별도로 작성했습니다.
처음 쓰는 보고서의 질문·분석·결론 연결법으로 결과를 한 편의 글로 정리하고, 면접 질문 카드로 자신이 정한 조건과 한계를 설명해 보세요.
관련 글
탐구보고서 처음 쓰는 법: 질문·자료·분석·결론을 연결하는 실전 예시NEW
가상 공지 네 개를 비교하며 관찰과 해석, 결론의 한계를 구분하고 보고서 한 편으로 묶습니다.
서류기반면접 예상 질문 준비법: 답변마다 근거를 붙이는 연습NEW
자신의 활동에서 근거 위치를 찾고 실제 수행·공동 역할·한계를 구분해 질문과 꼬리질문에 답합니다.
이 글은 일반 교육 정보이며 특정 대학 합격·학생부 평가·면접 결과를 보장하지 않습니다. 학교와 대학의 공식 안내를 함께 확인해 주세요.