청년미래적금 조건 총정리, 계산기로 직접 확인해보세요 [2편] 개발기
지난 [1편]에서는 청년미래적금이 무엇인지, 계산기로 뭘 확인할 수 있는지 다뤘습니다. 이번 편에서는 실제 계산 로직과, 이 과정에서 정책 정보를 검증하며 겪은 일을 기록합니다.
1. “청년도약계좌 신청방법”을 쓰려다 멈춘 순간
원래 이 계산기는 “청년도약계좌 신청방법”이라는 주제로 기획을 시작했습니다. 그런데 자료 조사를 하다가 청년도약계좌 신규가입이 2025년 12월 31일부로 종료됐다는 걸 발견했습니다. 그대로 진행했으면, 이미 끝난 제도의 신청방법을 정성껏 정리하는 글이 될 뻔했습니다.
이후 정책이 어떻게 바뀌었는지 다시 검색해서, 후속 상품인 청년미래적금의 정확한 조건(가입 연령, 소득 구간별 기여금, 만기 기간)을 확인하고 나서야 기획을 다시 잡았습니다. 시의성이 중요한 정책 정보를 다룰 때는, 작업을 시작하기 전이 아니라 작업 중간에도 한 번씩 최신 정보를 재확인하는 습관이 필요하다는 걸 느꼈습니다.
2. 적금 이자, 왜 단순 곱셈이 아닐까
적금은 매달 새로 돈을 넣는 상품이라, 정기예금처럼 “원금 × 이율”로 계산할 수 없습니다. 1월에 넣은 돈은 36개월 동안 이자가 붙지만, 36월에 넣은 마지막 돈은 단 1개월치 이자만 받습니다. 그래서 각 회차 납입금마다 남은 개월수를 따로 계산해서 더해야 합니다.
function calcInstallment(monthly, months, annualRate) {
const monthlyRate = annualRate / 12;
let interest = 0;
for (let m = 1; m <= months; m++) {
const remaining = months - m + 1; // 이 회차가 이자를 받는 개월수
interest += monthly * monthlyRate * remaining;
}
return Math.round(interest);
}
이 함수 하나를 공통 유틸로 만들어두고, 청년미래적금 계산과 청년도약계좌 비교 계산, 일반 적금 비교 계산까지 전부 재사용했습니다.
3. 소득 구간별 유형을 자동으로 판정하기
정부기여금 비율은 소득 구간에 따라 갈립니다. 여기에 중소기업 재직 여부까지 반영해야 해서, 판정 함수를 이렇게 짰습니다.
function getTypeInfo(incomeMan, smallBiz) {
if (incomeMan <= 3600) return { label: '우대형', rate: 0.12 };
if (incomeMan <= 6000) {
if (smallBiz) return { label: '우대형 (중소기업 신규취업 우대 적용)', rate: 0.12 };
return { label: '일반형', rate: 0.06 };
}
if (incomeMan <= 7500) return { label: '기여금 없음 (비과세만 적용)', rate: 0 };
return { label: '가입 대상 아님', rate: null };
}
rate가 null이면 가입 대상이 아니라는 뜻이라, 계산 버튼을 눌렀을 때 이 값을 확인해서 안내 메시지를 띄우고 계산을 중단하도록 처리했습니다.
4. 청년도약계좌와 비교하는 계산 — 과거가 아니라 “잔여 기간”만 계산
기존 청년도약계좌 가입자를 위한 비교 기능을 만들 때 고민했던 지점이 있습니다. 이미 몇 개월치를 납입한 상태인데, 그 과거 누적 실적까지 정확히 재현하려면 실제 은행 데이터가 필요합니다. 그건 계산기가 알 수 없는 정보입니다.
그래서 접근 방식을 바꿨습니다. 과거는 그대로 두고, “지금부터 남은 기간”만 새로 계산하는 것으로 범위를 좁혔습니다.
const remainingMonths = 60 - elapsed; // 5년(60개월) 중 남은 개월수
const leapRemainingPrincipal = leapMonthly * remainingMonths;
const leapRemainingMatch = Math.round(leapMonthly * leapMatchRate * remainingMonths);
const leapRemainingInterest = calcInstallment(leapMonthly, remainingMonths, leapAnnualRate);
이렇게 하면 “지금 갈아타면 앞으로 3년”, “지금 유지하면 앞으로 몇 개월”을 같은 기준으로 비교할 수 있습니다. 계산기 화면에도 이게 과거 실적이 아니라 잔여 기간 재계산이라는 점을 명확히 밝혀뒀습니다. 정확하지 않은 걸 정확한 것처럼 보여주지 않는 게, 정책 정보를 다루는 도구에서는 특히 중요하다고 생각했습니다.
5. 불확실한 정보는 숫자를 지어내지 않기
은행별 우대금리를 계산기에 넣고 싶었는데, 검색해봐도 은행마다 정확한 수치가 아직 공식적으로 다 공개되지 않은 상태였습니다. 여기서 그럴듯한 숫자를 임의로 넣을 수도 있었지만, 대신 이렇게 처리했습니다.
- 확실한 정보(기본금리 5%, 우대금리 범위 2~3%p)만 표시
- 은행별 정확한 수치는 실시간으로 바뀌는 공식 비교 사이트(은행연합회 소비자포털) 링크로 안내
- 다음 모집 일정도 정확한 날짜 대신 “예상치”임을 명시하고 카운트다운 표시
계산기가 틀린 확신을 주는 것보다, 모르는 부분은 모른다고 표시하고 정확한 출처로 안내하는 쪽이 낫다고 판단했습니다.
6. 마무리하며
이번 작업은 코드보다 정보의 시의성을 검증하는 과정 자체가 더 큰 비중을 차지했습니다. 정책 이름이 바뀌고, 조건이 바뀌고, 심지어 만들던 중간에도 최신 정보를 다시 확인해야 했던 경험은, “한 번 조사하고 끝”이 아니라 발행 직전까지 정보를 계속 검증하는 습관이 왜 필요한지 다시 느끼게 해줬습니다.
무료로 직접 사용해보고 싶으시다면 [1편]에 링크해둔 계산기를 확인해보세요.