여행 경비 분배 계산 원리
여행 경비를 똑같이 나누려면 먼저 모든 결제 내역을 합산한 뒤 참가자 수로 나누어 1인당 최종 부담액을 구합니다. 각 참가자가 실제로 결제한 금액에서 이 부담액을 빼면 받을 금액 또는 보낼 금액이 됩니다. 실제 결제가 부담액보다 많으면 채권자, 적으면 채무자로 분류하며 차이가 거의 없는 사람은 추가 송금 대상에서 제외합니다.
입력한 결제 내역에 같은 이름이 여러 번 나오면 해당 사람의 금액을 먼저 합칩니다. 이후 많이 보내야 하는 사람과 많이 받아야 하는 사람부터 금액을 맞추는 방식으로 송금 목록을 만듭니다. 한 번의 송금에서 보내는 사람의 부족액과 받는 사람의 초과 결제액 중 더 작은 금액을 사용하고, 한쪽 잔액이 없어질 때까지 반복합니다. 이 방식은 모든 영수증을 서로 주고받는 것보다 간결한 정산 내역을 만드는 데 목적이 있습니다.
예를 들어 민수, 지수, 하늘이 각각 120,000원, 45,000원, 30,000원을 결제했다면 총액은 195,000원이고 1인당 부담액은 65,000원입니다. 민수는 55,000원을 받아야 하고 지수는 20,000원, 하늘은 35,000원을 보내야 합니다. 따라서 하늘 → 민수 35,000원, 지수 → 민수 20,000원으로 정산할 수 있습니다.
이 계산기는 모든 참가자가 같은 비율로 공용 비용을 부담한다는 전제입니다. 특정 사람만 이용한 객실 업그레이드, 개인 쇼핑, 음주 비용과 어린이 할인은 입력 전에 제외하거나 당사자끼리 별도 정산해야 합니다. 원 단위로 나누어떨어지지 않으면 화면 표시와 실제 송금 합계에 몇 원 차이가 날 수 있으므로 마지막 송금에서 조정하세요. 참가자 이름과 결제금액은 서버, localStorage 또는 URL에 저장하지 않으며 결과 복사 버튼으로 정리된 텍스트만 복사합니다.
동일 부담 원칙과 송금 방식의 한계
정산 기준은 총 결제액을 참가자 수로 똑같이 나누는 산술식입니다. 보내야 할 잔액과 받아야 할 잔액을 큰 순서로 맞추지만 모든 경우에 송금 횟수의 최솟값을 보장하지는 않습니다. 아래 이름과 결제액은 가상 사례입니다. 원 단위 반올림 전 금액으로 잔액을 계산하므로 화면의 송금액을 합산했을 때 차이가 생기면 마지막 정산에서 조정해야 합니다.
공동 여행비를 정산하는 세 가지 가상 예시
아래는 입력 조건과 결과 해석을 설명하기 위한 가상 상황입니다. 실제 사용 기록이나 조사 결과가 아닙니다.
3명이 각각 120,000원, 45,000원, 30,000원을 결제한 경우
민수·지수·하늘을 참가자로 넣고 각 결제액을 입력하면 총액은 195,000원입니다. 3명으로 나눈 65,000원이 각자의 최종 부담액이므로 민수는 55,000원을 받아야 하고 지수는 20,000원, 하늘은 35,000원을 보내야 합니다. 도구는 하늘에서 민수로 35,000원, 지수에서 민수로 20,000원을 안내합니다. 정산 뒤 민수의 부담도 120,000 − 55,000 = 65,000원이 됩니다.
한 사람이 100,000원을 전액 결제한 경우
참가자는 가·나·다 세 명으로 입력하되 결제 내역은 가, 100000 한 줄만 넣습니다. 결제하지 않은 두 사람도 참가자 명단에는 있어야 3명으로 나눕니다. 정확한 부담액은 100,000 ÷ 3 = 33,333.333…원이고 화면에는 33,333원씩 표시됩니다. 나와 다가 각각 33,333원을 보내면 가의 최종 부담은 33,334원으로 1원 더 큽니다. 원화로 나누어떨어지지 않는 경우에는 누가 잔여 1원을 맡을지 정하면 됩니다.
4명이 80,000원, 60,000원, 40,000원, 20,000원을 결제한 경우
가·나·다·라의 결제 총액은 200,000원이고 1인 부담은 50,000원입니다. 가는 30,000원, 나는 10,000원을 받아야 하며 다는 10,000원, 라는 30,000원을 보내야 합니다. 따라서 라에서 가로 30,000원, 다에서 나로 10,000원의 두 번 송금으로 맞출 수 있습니다. 각자의 개인 쇼핑이 결제 내역에 섞여 있다면 먼저 빼야 하며, 도구는 공용 지출과 개인 지출을 자동으로 판별하지 않습니다.