03. 세 번째 수업: 우주 끝까지! 최대 랭킹과 최소 랭킹 방어 (Global Max & Min)
2장에서 우리는 “이 주변 바운더리 동네에서 제일 높은 놈(극대)” 과 “동네에서 제일 푹 들어간 놈(극소)” 스팟을 미분 스위치 $f’(x) = 0$ 이 되는 포인트로 모두 색출해 냈습니다.
그런데 메인 퀘스트의 목표는 동네 짱을 먹는 게 아닙니다. 이 산맥 지도 스크롤 전체 구역(제한된 정의역 구간) 을 죄다 통틀어 가장 스코어가 높게 치솟은 “절대 우주 신 급 랭킹 1위 (최댓값 Global Maximum)” 와, 이 세상에서 가장 깊은 심연 “랭킹 꼴찌 999등 (최솟값 Global Minimum)” 을 찾아 모니터에 UI로 뿌려주는 것입니다.
1. 후보자 엔트리 리스트(Entry List) 긁어 모으기
어떤 구간 $[A, B]$ 사이에서 파이썬 코드로 글로벌 랭킹 1위와 꼴찌를 스캔하려면, 무지성으로 전 구간을 노가다 조회할 필요가 없습니다. 우주 최강의 미분 스캐너 필터를 거친 “가장 수상한 용의자 후보군 4인방” 만 강제 소환해서 면접을 보면 끝납니다!
글로벌 랭킹 1위 후보자 소환 명단:
- 방구석 동네 짱 먹은 극댓값 봉우리들 (전부 소환)
- 동네 바닥에서 놀던 극솟값 계곡들 (꼴찌 후보로 전부 소환)
- 내비게이션 맵의 맨 왼쪽 출발선 끄트머리 경계값 ($f(A)$) (시작하자마자 게임이 젤 높게 시작했을 수도 있으니까!)
- 내비게이션 맵의 맨 오른쪽 결승선 끄트머리 경계값 ($f(B)$) (끝날 때 미친 듯이 솟구쳐서 레일이 끊길 수도 있으니까!)
이 4가지 후보자 그룹의 $Y$좌표(고도 수치) 값들을 리스트 배열 안에 좍 모아 놓습니다.
2. 면접과 처형 (Max / Min 판독)
이제 그 배열 [ 봉우리1, 봉우리2, 계곡1, 출발점A, 도착점B ] 안에 들어있는 고도 $Y$ 값 숫자 팩토리얼들을 가만히 째려봅니다.
- 제일 큰 숫자 튀어나와! $\rightarrow$ 네 놈이 이 우주의 [최댓값 (Global Max)] 자리를 차지한다!
- 제일 작은 쓰레기 숫자 튀어나와! $\rightarrow$ 네 놈이 이 지옥불 로스터 [최솟값 (Global Min)] 확정이다!
이것이 전부입니다. 컴퓨터 해킹 알고리즘도 배열의 Math.max() 나 numpy.max() 한 줄로 이 렌더링 스캔을 끝내버립니다. 우주 최고점을 구하려거든, 미분 레이저로 “평평한($f’(x)=0$) 후보 놈들” 과 “절벽 끝 경계선 놈들” 딱 저 두 종자만 족치면 되는 것입니다.
자, 후보생 스캔 엔진을 만들었으니, 이 엔진의 데이터를 모니터 도화지에 뿌려 실제 3D 지형 뼈대를 그리는 “그래프 스캐닝 랜더링 머신” 을 4장에서 가동해 봅시다.