본문으로 건너뛰기
-
✨ 즐거움이 가득한 흥인 연구소 💡-> 지금 바로가기
로고 다크모드 로고 흥인 (heung-in)

✨ AI와 코딩으로 일상과 업무의 해답을 직접 만드는 공간🛠️

로고 다크모드 로고 흥인 (heung-in)

✨ AI와 코딩으로 일상과 업무의 해답을 직접 만드는 공간🛠️

  • 흥인이란
    • 운영자 소개 (About Us)
    • 개인정보처리방침 (Privacy Policy)
    • 문의하기 (Contact Us)
  • 🛠️내 손으로 만든 웹 툴 (계산기/분석기)
  • 📚 AI 자동화 & 프롬프트 가이드
  • 흥인이란
    • 운영자 소개 (About Us)
    • 개인정보처리방침 (Privacy Policy)
    • 문의하기 (Contact Us)
  • 🛠️내 손으로 만든 웹 툴 (계산기/분석기)
  • 📚 AI 자동화 & 프롬프트 가이드
닫기

검색

로고 다크모드 로고 흥인 (heung-in)

✨ AI와 코딩으로 일상과 업무의 해답을 직접 만드는 공간🛠️

로고 다크모드 로고 흥인 (heung-in)

✨ AI와 코딩으로 일상과 업무의 해답을 직접 만드는 공간🛠️

  • 흥인이란
    • 운영자 소개 (About Us)
    • 개인정보처리방침 (Privacy Policy)
    • 문의하기 (Contact Us)
  • 🛠️내 손으로 만든 웹 툴 (계산기/분석기)
  • 📚 AI 자동화 & 프롬프트 가이드
  • 흥인이란
    • 운영자 소개 (About Us)
    • 개인정보처리방침 (Privacy Policy)
    • 문의하기 (Contact Us)
  • 🛠️내 손으로 만든 웹 툴 (계산기/분석기)
  • 📚 AI 자동화 & 프롬프트 가이드
닫기

검색

🛠️내 손으로 만든 웹 툴 (계산기/분석기)

원리금균등 vs 원금균등, 총이자 얼마나 다를까 [2편] 개발기

사진
By youn3345
2026년 09월 12일 3 Min Read
0

지난 [1편]에서는 대출 상환방식 비교기가 뭘 보여주는지 다뤘습니다. 이번 편에서는 세 가지 상환방식을 하나의 함수로 통합한 방법과, 그래프가 왜곡됐던 문제를 표로 바꿔 해결한 과정을 기록합니다.

Table of Contents

Toggle
  • 1. 세 가지 방식을 하나의 함수로
  • 2. 그래프가 고장 났던 이유
  • 3. 해결책: 시각화 방식 자체를 바꾸기
  • 4. “적합한 시각화 도구가 무엇인가”부터 다시 묻기
  • 5. 마무리하며

1. 세 가지 방식을 하나의 함수로

원리금균등, 원금균등, 만기일시상환은 계산 방식이 다르지만, 공통적으로 “매달 이자를 계산하고, 원금을 얼마나 갚을지 결정하고, 남은 원금을 줄인다”는 흐름을 가집니다. 이 공통 흐름을 하나의 함수로 만들고, method 파라미터로 분기하는 방식을 택했습니다.

function simulateLoan(principal, annualRate, totalMonths, graceMonths, method) {
  const monthlyRate = annualRate / 100 / 12;
  let remaining = principal;
  const schedule = [];

  for (let m = 1; m <= totalMonths; m++) {
    const interest = Math.round(remaining * monthlyRate);
    let principalPaid = 0;

    if (method === 'bullet') {
      // 만기일시상환: 마지막 달에만 원금 전액
      principalPaid = (m === totalMonths) ? remaining : 0;
    } else if (m <= graceMonths) {
      principalPaid = 0; // 거치기간: 이자만
    } else if (method === 'equal') {
      // 원리금균등: 고정 상환액에서 이자를 뺀 나머지가 원금
    } else {
      // 원금균등: 매달 동일한 원금
    }

    remaining -= principalPaid;
    schedule.push({ month: m, principalPaid, interest, remaining });
  }
  return schedule;
}

세 방식을 각각 별도 함수로 만들었다면 거치기간이나 소득공제 계산 로직을 세 번 따로 구현해야 했을 텐데, 하나로 합치니 이후 기능들(중도상환, 대환대출 비교)도 이 함수 하나만 재사용하면 됐습니다.

2. 그래프가 고장 났던 이유

처음엔 월별 상환액을 선 그래프로 그렸습니다. 그런데 배포하고 확인해보니, 만기일시상환의 마지막 달 값(원금 3억+이자)이 다른 두 방식의 월 상환액(수십~수백만원)보다 압도적으로 커서, y축이 그 값에 맞춰 늘어나고 나머지 두 선은 바닥에 깔린 것처럼 보였습니다.

// 문제가 됐던 상황
// 원리금균등 월 상환액: 약 150만원
// 만기일시상환 마지막 달: 약 3억 1천만원 ← 이 값 때문에 y축이 왜곡됨

3. 해결책: 시각화 방식 자체를 바꾸기

처음엔 “마지막 달 값만 그래프에서 제외하고 텍스트로 따로 보여주자”는 임시방편으로 접근했습니다. 그런데 사용자 피드백을 받고 나서, 애초에 선 그래프가 이 데이터에 안 맞는 시각화 방식이라는 걸 깨달았습니다. 360개월치 연속 변화를 보여주는 데는 선 그래프가 적합하지만, “특정 시점에 세 방식을 나란히 비교”하는 목적에는 오히려 표가 더 정확하고 왜곡될 여지가 없습니다.

function getMilestoneMonths(totalMonths) {
  const points = new Set();
  points.add(1);
  const totalYears = totalMonths / 12;
  const step = Math.max(1, Math.round(totalYears / 6));
  for (let y = step; y < totalYears; y += step) points.add(y * 12);
  points.add(totalMonths); // 마지막 달은 항상 포함
  return Array.from(points).sort((a, b) => a - b);
}

대출기간을 6등분해서 대표 시점만 뽑고, 각 시점마다 세 방식의 원금·이자·합계를 표의 한 행에 나란히 넣었습니다. 표는 숫자가 아무리 커도 그 칸에 그대로 찍히기 때문에, 만기일시상환의 원금 뭉치도 왜곡 없이 정확하게 드러납니다.

4. “적합한 시각화 도구가 무엇인가”부터 다시 묻기

이번 문제에서 배운 건, 그래프가 이상하게 나올 때 그래프를 고치기보다 애초에 이 시각화 방식이 이 데이터에 맞는지부터 다시 물어봐야 한다는 점이었습니다. 연속적으로 완만하게 변하는 데이터에는 선 그래프가 좋지만, 이번처럼 극단적으로 튀는 값이 섞여 있고 “몇 개 시점을 정확히 비교”하는 게 목적이라면 표가 훨씬 정직한 선택이었습니다. 시각화 방식을 유지한 채 데이터를 보정하는 것보다, 목적에 맞는 시각화 방식을 다시 고르는 게 더 근본적인 해결이었습니다.

5. 마무리하며

이번 프로젝트는 계산 로직 자체보다 “결과를 어떻게 보여줄 것인가”에서 더 많은 시행착오가 있었습니다. 정확한 숫자를 계산해도 시각화가 왜곡되면 사용자는 잘못된 인상을 받을 수 있다는 걸 다시 확인했고, 이후 도구를 만들 때도 “이 데이터의 값 범위가 극단적으로 벌어지지 않는지”를 시각화 방식을 정하기 전에 먼저 점검하는 습관이 생겼습니다.

무료로 직접 사용해보고 싶으시다면 [1편]에 링크해둔 계산기를 확인해보세요.

Tags:

Chart.js개발기대출 계산기대출 상환방식데이터 시각화만기일시상환원금균등원리금균등자바스크립트 계산기코드 재사용
사진
작성자

youn3345

Follow Me
다른 기사
Previous

원리금균등 vs 원금균등, 총이자 얼마나 다를까 [1편]

Next

52주 적금, 연 7% 준다더니 왜 이자가 이거밖에 안 될까 [1편]

댓글 없음! 첫 댓글을 남겨보세요.

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최신 글

  • 52주 적금, 연 7% 준다더니 왜 이자가 이거밖에 안 될까 [2편] 개발기
  • 52주 적금, 연 7% 준다더니 왜 이자가 이거밖에 안 될까 [1편]
  • 원리금균등 vs 원금균등, 총이자 얼마나 다를까 [2편] 개발기
  • 원리금균등 vs 원금균등, 총이자 얼마나 다를까 [1편]
  • 전세가 항상 유리할까? 전환율로 직접 검증해봤습니다 [2편] 개발기

카테고리

  • 📚 AI 자동화 & 프롬프트 가이드
  • 🛠️내 손으로 만든 웹 툴 (계산기/분석기)

    흥인 이란?

    • 개인정보처리방침 (Privacy Policy)
    • 문의하기 (Contact Us)
    • 운영자 소개 (About Us)

    Copyright 2026 — 흥인 (heung-in). All rights reserved.