수직선의 start에서 출발해 positions에 있는 모든 위치를 한 번 이상 방문하고 finish에 도착해요. 한 단위 이동의 거리는 1이며 방문 순서는 자유예요. 중간에 어떤 위치를 지나가도 방문한 것으로 인정해요.
int solution(vector<int> positions, int start, int finish)를 작성해 최소 총거리를 반환해 주세요. 위치 수는 08, 모든 위치와 start·finish는 -100100의 정수예요. 위치는 중복될 수 있어요. 빈 배열이면 start에서 finish로 바로 가요. 최소 경로가 여러 개면 거리만 반환해요. 반환형은 int예요.
예시 1: positions = {2, 7}, start = 0, finish = 10 → 10. 0에서 10까지 가는 동안 두 위치를 모두 지나가요.
예시 2: positions = {2, 8}, start = 5, finish = 0 → 11. 5→8→2→0의 거리는 3+6+2예요.
실행 입력은 N start finish, 다음 줄의 위치 N개예요. N=0이면 위치 줄은 없어도 돼요. 아래 하네스가 매개변수를 구성하므로 solution만 작성해요.
예시 입력
2 0 10 2 7
예상 결과
10
예시 입력
2 5 0 2 8
예상 결과
11
핵심 개념
greedy: 선택 순서의 정당성을 반례와 함께 확인해요.brute-force: 입력 제한 안의 후보를 빠짐없이 비교해요.number-theory-basic: 정수·나머지·거리의 계산을 구분해요.