여행 정산 계산기

여행 끝나고 "내가 렌터카 냈고, 네가 숙소 냈고, 저녁은 셋이서만…"을 머리로 풀면 꼭 누군가 손해 봅니다. 결제 내역을 줄 단위로 적으면 누가 누구에게 얼마 보내면 끝나는지 최소 횟수로 뽑아 줍니다.

여행 정산 계산기모두의계산기

결제 내역 적는 법

한 줄에 결제 하나. 결제자 금액은 필수이고, 그 뒤에 [참여자,참여자]를 붙이면 그 사람들끼리만 나눕니다. 생략하면 전원이 나눕니다. 나머지는 메모로 남깁니다. 예를 들어 철수 96000 [철수,하나,민수] 저녁 회는 철수가 낸 9만6천원을 세 명이 3만2천원씩 부담한다는 뜻입니다. 결제자 본인이 참여자에 빠져 있으면(예: 대신 사 준 경우) 그대로 적으면 되고, 결제자는 부담 0에 낸 돈만 잡힙니다. 참여자 목록에 없는 이름이 나오면 자동으로 추가하고 알려 줍니다.

최소 송금 횟수 계산

각자 "낸 돈 − 부담액"으로 차액을 구한 뒤, 받을 사람(+)과 보낼 사람(−)을 큰 금액부터 짝지어 상쇄합니다(그리디). 4명이면 최대 3번, n명이면 최대 n−1번의 송금으로 끝납니다. 모두가 총무 한 명에게 보내고 총무가 다시 나눠 주는 방식보다 송금이 절반으로 줄고, 총무가 돈을 들고 있을 필요도 없습니다. 이론상 최소가 아닐 수도 있지만(그건 NP-hard 문제) 사람 수가 10명 이하면 실용적으로 충분합니다.

반올림 처리

96,000원을 3명이 나누면 32,000원이지만 100,000원을 3명이 나누면 33,333.33원입니다. 송금할 땐 원 단위가 번거로우니 기본값을 100원 단위로 두었고, 이 경우 최대 몇백 원 오차가 총액에 남습니다. 정확히 맞추고 싶으면 원 단위로 바꾸면 됩니다. 어느 쪽이든 "부담액" 표는 반올림 전 값입니다.

이런 경우엔

환전한 외화로 결제한 건 그날 환율로 원화 환산해서 넣으세요. 항공권처럼 각자 결제한 건 적을 필요 없습니다(부담과 낸 돈이 같아서 차액 0). 술을 안 마신 사람 술값을 빼려면 그 결제를 "식사"와 "술" 두 줄로 나눠 참여자를 다르게 적으면 됩니다.

자주 묻는 질문

한 사람이 두 번 이상 결제하면?

줄을 여러 개 적으면 됩니다. 결제자 이름이 같으면 자동으로 합산됩니다.

결제자가 참여자 대괄호 안에 없어도 되나요?

됩니다. 그 결제는 대괄호 안 사람들만 부담하고 결제자는 돈만 낸 것으로 계산돼, 그만큼 돌려받습니다.

이름에 띄어쓰기가 있으면?

결제자 이름은 띄어쓰기 없이 적어야 합니다(첫 공백 앞까지를 이름으로 봄). "김 민수"는 "김민수"로 적으세요.

함께 보기