| 설명 |
울산 남구 신정동 수익형 다가구주택 매매 | 월세 463만원·승강기·주차 7대
#rr-income-ad{
--ink:#15262c; --deep:#0e2a36; --deep2:#081b23; --brass:#b9863f;
--paper:#f6f2e7; --paper2:#eee5d2; --red:#9d3e34; --chalk:#ffd84a;
--muted:#6e6a61; --line:rgba(58,48,35,.18);
width:min(1060px,calc(100% - 28px));margin:28px auto 80px;padding:0;
color:var(--ink); font-family:"Noto Serif KR","Nanum Myeongjo",Georgia,serif;
line-height:1.75; word-break:keep-all; background:
radial-gradient(circle at 18% 12%,rgba(255,255,255,.78) 0 1px,transparent 2px),
radial-gradient(circle at 79% 42%,rgba(105,80,45,.08) 0 1px,transparent 2px),
repeating-linear-gradient(0deg,rgba(98,78,50,.025) 0 1px,transparent 1px 4px),
linear-gradient(135deg,var(--paper),var(--paper2));
background-size:17px 17px,23px 23px,100% 4px,100% 100%;
}
#rr-income-ad,#rr-income-ad *{box-sizing:border-box}
#rr-income-ad a{color:inherit}
#rr-income-ad .paper{background:rgba(250,247,238,.8);border:1px solid rgba(93,67,34,.22);box-shadow:0 18px 55px rgba(44,30,14,.12),inset 0 0 90px rgba(73,50,23,.06);position:relative;overflow:hidden}
#rr-income-ad .paper:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 49.8%,rgba(70,50,25,.025) 50%,transparent 50.2%)}
#rr-income-ad header{padding:58px 7% 48px;background:linear-gradient(145deg,rgba(8,27,35,.98),rgba(14,42,54,.96));color:#f8f0df;position:relative}
#rr-income-ad header:before{content:"INCOME PROPERTY · ULSAN";position:absolute;right:-12px;top:18px;font:700 11px/1 Arial,sans-serif;letter-spacing:.24em;color:rgba(255,255,255,.28);transform:rotate(2deg)}
#rr-income-ad .eyebrow{font:700 12px/1.3 Arial,sans-serif;letter-spacing:.22em;color:#e2b96f;text-transform:uppercase}
#rr-income-ad h1{font-size:clamp(31px,5vw,58px);line-height:1.18;margin:16px 0 18px;letter-spacing:-.045em}
#rr-income-ad .lead{font-size:clamp(16px,2vw,21px);max-width:780px;color:#eee4cf;margin:0}
#rr-income-ad .seal{display:inline-block;margin-top:25px;border:1px solid rgba(226,185,111,.65);padding:7px 13px;font:700 12px/1 Arial,sans-serif;letter-spacing:.12em;color:#e2b96f}
#rr-income-ad .nav{display:flex;gap:8px;flex-wrap:wrap;padding:15px 5%;background:#f0e7d4;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}
#rr-income-ad .nav a{text-decoration:none;font-size:13px;padding:6px 10px;border:1px solid rgba(30,55,62,.2);background:rgba(255,255,255,.45)}
#rr-income-ad section{padding:48px 7%;border-bottom:1px solid var(--line);position:relative;z-index:1}
#rr-income-ad section:nth-of-type(even){background:rgba(255,255,255,.24)}
#rr-income-ad h2{font-size:clamp(24px,3vw,36px);line-height:1.3;margin:0 0 23px;color:var(--deep);letter-spacing:-.04em}
#rr-income-ad h2:before{content:"";display:inline-block;width:28px;height:4px;margin:0 10px 7px 0;background:var(--brass)}
#rr-income-ad h3{font-size:20px;color:var(--deep);margin:26px 0 9px}
#rr-income-ad p{margin:9px 0}
#rr-income-ad .small{font-size:13px;color:var(--muted)}
#rr-income-ad .red{color:var(--red);font-weight:700}
#rr-income-ad .cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
#rr-income-ad .card{padding:21px 17px;border:1px solid var(--line);background:rgba(255,253,246,.68);min-height:112px}
#rr-income-ad .card b{display:block;font-size:22px;color:var(--deep)}
#rr-income-ad .card span{font-size:13px;color:var(--muted)}
#rr-income-ad .feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}
#rr-income-ad .feature{padding:22px;border-left:4px solid var(--brass);background:rgba(255,255,255,.5)}
#rr-income-ad .feature strong{display:block;color:var(--deep);font-size:18px;margin-bottom:5px}
#rr-income-ad .table-wrap{overflow-x:auto;border:1px solid var(--line)}
#rr-income-ad table{width:100%;border-collapse:collapse;min-width:650px;background:rgba(255,255,255,.45)}
#rr-income-ad th,#rr-income-ad td{padding:13px 14px;border-bottom:1px solid var(--line);text-align:left}
#rr-income-ad th{background:var(--deep);color:#f6eedc;font-size:13px;letter-spacing:.04em}
#rr-income-ad td:nth-last-child(-n+2){text-align:right;font-variant-numeric:tabular-nums}
#rr-income-ad tr:last-child td{font-weight:800;background:rgba(185,134,63,.11)}
#rr-income-ad .formula{padding:22px;background:var(--deep2);color:#f4ead6;border-left:6px solid var(--brass)}
#rr-income-ad .formula strong{color:#ffd58a;font-size:22px}
#rr-income-ad .calculator{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:20px;border:1px dashed var(--brass);background:rgba(255,255,255,.42)}
#rr-income-ad .calculator label{font-size:12px;color:var(--muted)}
#rr-income-ad .calculator input{display:block;width:100%;margin-top:5px;border:1px solid var(--line);background:#fffdf7;padding:11px;font:700 16px Arial,sans-serif;color:var(--deep)}
#rr-income-ad .calc-result{grid-column:1/-1;padding:15px;background:var(--deep);color:white;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
#rr-income-ad .calc-result b{display:block;color:#ffd58a;font-size:19px}
#rr-income-ad details{border-top:1px solid var(--line);background:rgba(255,255,255,.28)}
#rr-income-ad details:last-child{border-bottom:1px solid var(--line)}
#rr-income-ad summary{cursor:pointer;list-style:none;padding:18px 44px 18px 8px;font-weight:800;color:var(--deep);position:relative}
#rr-income-ad summary::-webkit-details-marker{display:none}
#rr-income-ad summary:after{content:"+";position:absolute;right:10px;color:var(--brass);font-size:22px;top:14px}
#rr-income-ad details[open] summary:after{content:"-"}
#rr-income-ad .answer{padding:0 10px 19px 24px;border-left:3px solid var(--brass);margin:0 0 15px 8px}
#rr-income-ad .notice{padding:18px 20px;border:1px solid rgba(157,62,52,.3);background:rgba(157,62,52,.055)}
#rr-income-ad .world{background:linear-gradient(145deg,var(--deep2),var(--deep))!important;color:#f2ead8}
#rr-income-ad .world h2,#rr-income-ad .world h3{color:#f0ce91}
#rr-income-ad .languages{display:grid;grid-template-columns:1fr 1fr;gap:12px}
#rr-income-ad .lang{padding:20px;border:1px solid rgba(232,203,150,.25);background:rgba(255,255,255,.04)}
#rr-income-ad .lang b{color:#e8c484;font-family:Arial,sans-serif;font-size:12px;letter-spacing:.12em}
#rr-income-ad .lang p{margin-top:7px}
#rr-income-ad .cta{text-align:center;padding:55px 7%;background:#ece1ca}
#rr-income-ad .cta a{display:inline-block;margin:15px 5px 0;text-decoration:none;padding:13px 20px;background:var(--deep);color:white;border:1px solid var(--deep)}
#rr-income-ad .cta a.alt{background:transparent;color:var(--deep)}
#rr-income-ad footer{padding:25px 7%;font-size:12px;color:var(--muted);background:#e6dac1}
#chalkLayer{position:fixed;inset:0;pointer-events:none;z-index:1000}
#chalkTip{position:fixed;width:24px;height:8px;border-radius:2px;background:linear-gradient(90deg,#fff3a2,#ffd84a);box-shadow:0 0 5px rgba(255,216,74,.65);pointer-events:none;z-index:1001;transform:rotate(-28deg);opacity:0}
@media(max-width:800px){#rr-income-ad .cards{grid-template-columns:1fr 1fr}#rr-income-ad .feature-grid{grid-template-columns:1fr}#rr-income-ad .languages{grid-template-columns:1fr}#rr-income-ad .calculator{grid-template-columns:1fr 1fr}#rr-income-ad .calc-result{grid-template-columns:1fr}#rr-income-ad .nav{position:static}}
@media(max-width:520px){#rr-income-ad{width:100%;margin:0}#rr-income-ad .paper{border:0}#rr-income-ad .cards,#rr-income-ad .calculator{grid-template-columns:1fr}#rr-income-ad header,#rr-income-ad section{padding-left:22px;padding-right:22px}#rr-income-ad .nav{padding:12px 18px}#rr-income-ad .card{min-height:auto}}
@media(prefers-reduced-motion:reduce){#chalkLayer,#chalkTip{display:none}}
{
"@context":"https://schema.org",
"@graph":[
{
"@type":"RealEstateListing",
"name":"울산 남구 신정동 수익형 다가구주택 매매",
"description":"2018년 사용승인, 철근콘크리트, 7가구, 월세 합계 463만원, 승강기 1대, 자주식 주차 7대의 수익형 다가구주택",
"datePosted":"2026-07-18",
"url":"https://ulsanzigbang.net/",
"offers":{"@type":"Offer","price":"1350000000","priceCurrency":"KRW","availability":"https://schema.org/InStock"},
"address":{"@type":"PostalAddress","addressLocality":"울산광역시 남구","addressRegion":"울산광역시","addressCountry":"KR"},
"floorSize":{"@type":"QuantitativeValue","value":"426.07","unitCode":"MTK"}
},
{
"@type":"RealEstateAgent",
"name":"응답하라공인중개사",
"url":"https://ulsanzigbang.net/",
"telephone":"052-266-4446",
"areaServed":"울산광역시"
},
{
"@type":"FAQPage",
"mainEntity":[
{"@type":"Question","name":"현재 월 임대수입은 얼마인가요?","acceptedAnswer":{"@type":"Answer","text":"제공된 임대현황 기준 보증금 합계 1억 5,500만원, 월세 합계 463만원입니다. 계약 전 임대차계약서와 입금내역을 다시 확인합니다."}},
{"@type":"Question","name":"최상층에 직접 거주할 수 있나요?","acceptedAnswer":{"@type":"Answer","text":"기존 임대차계약 종료와 보증금 반환 절차를 거치면 직접 거주할 수 있습니다. 최상층 월세 100만원이 제외되므로 수익구조가 달라집니다."}},
{"@type":"Question","name":"승강기와 주차장이 있나요?","acceptedAnswer":{"@type":"Answer","text":"건축물대장상 승강기 1대와 자주식 주차 7대가 확인됩니다. 실제 사용상태는 현장에서 확인합니다."}},
{"@type":"Question","name":"다가구주택 관리는 어떻게 하나요?","acceptedAnswer":{"@type":"Answer","text":"공용부 청소와 시설점검은 관리업체에 위탁할 수 있고, 공실 임대와 임차인 모집은 응답하라공인중개사와 협의할 수 있습니다."}},
{"@type":"Question","name":"재개발이 확정된 곳인가요?","acceptedAnswer":{"@type":"Answer","text":"해당 건물의 정비구역 편입이나 재개발은 확정되지 않았습니다. 지역의 도시재생과 노후 주거지 정비 논의는 참고사항일 뿐 미래가치나 보상을 보장하지 않습니다."}}
]
}
]
}
Ulsan Income Property
월세를 받으며 보유하는 울산 남구 수익형 다가구주택
2018년 사용승인 · 철근콘크리트 · 총 7가구 · 월세 합계 463만원 · 승강기 1대 · 자주식 주차 7대
매매가 13억 5,000만원
핵심정보임대현황수익분석
운영방법묻고 답하기지역 변화Global
숫자로 먼저 보는 매물
매매가격13억 5천
현재 월세 합계463만원
임대보증금 합계1억 5,500
총 가구7가구
대지면적231.40㎡약 70평
연면적426.07㎡약 128.9평
건폐율 / 용적률59.97 / 184.13%
사용승인2018년 10월
소재지는 울산 남구 신정동 일원까지만 공개합니다. 지번·도로명·건물명·인근 특정 시설과 거리는 공개하지 않으며, 상세 위치는 매수 의사 확인 후 안내합니다.
건축물대장으로 확인한 구성
철근콘크리트·내진설계2018년 사용승인된 지상 4층 건물이며 건축물대장상 내진설계 적용이 확인됩니다.
승강기 1대다가구주택에서 임차인의 층간 이동 부담을 낮추고 최상층 임대 경쟁력을 높여주는 실용적인 설비입니다.
자주식 주차 7대건축물대장상 총 7대입니다. 계약 전 실제 주차구획과 사용상태를 현장에서 다시 확인합니다.
층대장상 용도면적구성
1층계단실19.39㎡공용 출입·계단부
2층다가구주택138.76㎡3가구
3층다가구주택138.76㎡3가구
4층다가구주택129.16㎡최상층 1가구
합계단독주택(다가구주택)426.07㎡총 7가구
최상층은 건축물상 실제 4층이며, 숫자 4를 피하는 관행에 따라 현관 호수만 501호로 사용 중입니다. 이는 5층 증축이라는 의미가 아닙니다.
현재 임대현황
호실구조보증금월세
201호쓰리룸1,000만원65만원
202호쓰리룸1,500만원62만원
203호투룸500만원50만원
301호쓰리룸1,000만원68만원
302호쓰리룸1,000만원68만원
303호투룸500만원50만원
최상층방3+거실 포룸1억원100만원
합계7가구1억 5,500만원463만원
임대현황은 매도인이 제공한 자료 기준입니다. 계약 전 각 임대차계약서, 입금내역, 계약기간, 체납·공실 여부와 보증금 반환책임을 대조 확인합니다.
매매가 13억 5,000만원 수익분석
월 463만원 × 12개월 = 연간 임대료 5,556만원
매매가 대비 단순수익률 약 4.12%
보증금 승계 후 필요금액 11억 9,500만원 대비 약 4.65%
취득세·중개보수·대출이자·공실·수선비·세금·보험료·승강기 및 공용부 관리비를 반영하지 않은 세전 단순수익률입니다. ‘보증금 차감 필요금액’은 최종 자기자본을 보장하는 표현이 아니며 금융조건과 거래비용에 따라 달라집니다.
조건을 바꿔 보는 간단 계산기
매매가(만원)
승계 보증금(만원)
월세 합계(만원)
연 임대료5,556만원
매매가 대비4.12%
보증금 차감액 대비4.65%
소유 후 운영은 이렇게
최상층 직접 거주임대차 종료와 보증금 반환 후 소유자가 방3+거실 포룸에 직접 거주할 수 있습니다. 이 경우 최상층 월세는 제외됩니다.
전 가구 임대 운영최상층까지 임대를 유지하면 현재 자료 기준 월 463만원의 임대료 구조를 활용할 수 있습니다.
관리업체 위탁공용계단 청소, 쓰레기·소모품 관리, 정기점검 등은 전문 관리업체와 범위·비용을 정해 위탁할 수 있습니다.
최상층에 직접 거주하면?
최상층 임차인의 계약 종료와 보증금 1억원 반환을 전제로, 나머지 6가구의 월세는 합계 363만원, 보증금은 합계 5,500만원입니다. 매매가 대비 단순수익률은 약 3.23%이며, 보증금 차감액 12억 9,500만원 대비 약 3.36%입니다. 실제 입주 가능일은 기존 임대차계약을 확인해야 합니다.
보증금과 월세를 조정할 수 있나요?
신규 임대 또는 계약갱신 협의 시 시장수요에 맞춰 보증금을 낮추고 월세를 높이는 방식, 반대로 보증금을 높이고 월세 부담을 낮추는 방식을 검토할 수 있습니다. 다만 기존 계약을 임대인이 일방적으로 변경할 수 없으며, 임차인 동의·계약갱신요구권·증액 제한·주변 시세를 함께 검토해야 합니다.
공실 임대는 누가 맡나요?
응답하라공인중개사는 울산 주거용 임대의 사진 정리, 조건 설계, 광고 등록, 임차인 상담과 현장 안내를 지원합니다. 공실이 생겼을 때도 무조건적인 임대 완료를 보장하는 방식이 아니라, 시장 반응을 보며 적정 보증금·월세·입주조건을 조정해 공실기간을 줄이는 방향으로 협의합니다.
매수인이 자주 묻는 질문
Q. 월 463만원이 확정 수익인가요?현재 제공된 임대현황을 합산한 금액입니다. 공실, 체납, 계약변경, 수선비와 세금에 따라 실제 순수익은 달라질 수 있으므로 계약 전 임대차계약서와 입금내역을 확인합니다.
Q. 취득세는 얼마인가요?다가구주택 취득세는 매수인의 개인·법인 여부, 주택 수, 취득가액, 전용면적과 지방세 중과 여부 등에 따라 달라집니다. 계약 전에 법무사·세무사 또는 관할기관을 통해 해당 매수인 기준으로 계산해야 합니다.
Q. 임대보증금 1억 5,500만원은 매매대금에서 빼나요?통상 매수인이 임대인의 보증금 반환채무를 승계하는 조건이라면 잔금 계산에 반영합니다. 다만 임대차별 실제 보증금, 대항력, 확정일자, 반환채무 승계와 정산방법을 계약서에 명확히 기재해야 합니다.
Q. 최상층에 주인이 살아도 되나요?가능하지만 기존 임차인의 계약기간과 퇴거일, 보증금 반환을 먼저 확인해야 합니다. 직접 거주하면 최상층 월세 100만원이 제외되어 전체 임대수익이 달라집니다.
Q. 왜 실제 4층인데 최상층 호수가 501호인가요?건축물대장상 지상 4층 건물입니다. 숫자 4를 꺼리는 관행에 따라 현관 호수만 501호로 사용하며, 5층 증축을 의미하지 않습니다.
Q. 승강기가 있으면 관리가 부담스럽지 않나요?정기검사, 유지관리계약, 전기료와 수선비가 발생합니다. 반면 최상층까지 이동이 편리해 가족 단위 임차인과 고층 호실의 경쟁력에 도움이 될 수 있습니다. 최근 검사기록과 월 유지비는 계약 전에 확인합니다.
Q. 청소와 건물 관리는 직접 해야 하나요?직접 관리할 수도 있고 공용계단 청소, 소모품, 쓰레기 배출상태 확인, 시설점검을 관리업체에 위탁할 수도 있습니다. 관리범위와 방문주기에 따라 비용이 달라집니다.
Q. 주차는 몇 대인가요?건축물대장상 자주식 주차 총 7대입니다. 차량 크기와 동선에 따른 실제 주차 편의성은 현장에서 확인해야 합니다.
Q. 대출은 얼마나 가능한가요?다가구주택 담보대출은 감정가, 선순위 임대보증금, 방공제, 소득과 신용, 금융기관 심사에 따라 달라집니다. 매매가만으로 대출 가능액을 확정할 수 없습니다.
Q. 관리비와 수선비는 수익률에 포함됐나요?아닙니다. 표시된 수익률은 세전 단순수익률입니다. 공용전기, 승강기, 청소, 보험, 재산세, 수선, 공실과 금융비용을 반영한 별도의 순수익 분석이 필요합니다.
Q. 위반건축물은 없나요?제공된 건축물대장에는 위반건축물 표기가 확인되지 않습니다. 다만 대장에 표기가 없다는 사실만으로 현장상 무단 증축이나 용도변경이 전혀 없다고 단정할 수 없어 계약 전 현황을 대장과 대조합니다.
현재 수익과 지역 변화 가능성을 함께
이 매물의 1차 판단 기준은 미래 개발 기대가 아니라 현재 확인되는 토지·건물 규모, 7가구 임대구조와 월세 현황입니다. 다만 신정3동 일원에서는 2019년부터 노후 주거지 생활기반시설 정비와 공동체 활성화를 중심으로 도시재생사업이 추진돼 왔습니다.
김태규 울산 남구갑 국회의원도 2026년 6월 당선 직후 남구갑의 노후 주거지 정비와 재개발 추진, 트램 1호선 지원 의사를 밝혔습니다. 이는 지역 전반의 정책 방향을 살펴보는 참고자료로 볼 수 있습니다.
중요한 확인사항
해당 건물의 재개발, 정비구역 편입, 사업시기, 보상 또는 가격상승은 확정되지 않았습니다. 현재 임대수익을 받으며 보유하는 동안 주변 정비 논의가 새로운 기회가 될 가능성은 있지만, 이를 매매가치나 수익으로 보장하지 않습니다.
관련 자료: 신정3동 도시재생사업 보도 · 노후 주거지 정비 관련 당선인 발언 보도
Ulsan Stay & Property Desk
울산에서 근무할 임직원 숙소, 법인 사택, 장기 체류 주택, 기숙사형 주거와 투자용 부동산을 찾는 국내외 기업을 지원합니다. 아래 문장은 조금은 농담이고, 서비스에 대한 자신감은 진담입니다. 울산에 머문다면 응답하라공인중개사를 거쳐 가는 일이 어느새 필연처럼 느껴질지도 모릅니다.
ENGLISHComing to Ulsan for business, an executive assignment, or a long-term stay? Finding a home through Reply Real Estate may not be legally mandatory—but after one smooth consultation, it may feel inevitable. Corporate housing, executive residences, and rental property support: ulsanzigbang.net
日本語蔚山での長期滞在、法人住宅、役員宿舎、賃貸住宅をお探しですか。応答せよ公認仲介士を通すことは義務ではありませんが、一度相談すれば「必然だった」と感じるかもしれません。蔚山の住まい探しは ulsanzigbang.net へ。
עבריתמגיעים לאולסן לעבודה, לתפקיד ניהולי או לשהייה ארוכה? תיווך דרך Reply Real Estate אינו חובה על פי חוק, אבל אחרי ייעוץ מסודר הוא עשוי להרגיש כמו הבחירה המתבקשת. דיור לחברות, מגורי מנהלים ונכסים להשכרה: ulsanzigbang.net
ITALIANOVenite a Ulsan per lavoro, per un incarico dirigenziale o per un soggiorno lungo? Passare da Reply Real Estate non è obbligatorio, ma dopo una consulenza semplice e precisa potrebbe sembrare inevitabile. Alloggi aziendali, residenze per dirigenti e locazioni: ulsanzigbang.net
РУССКИЙПриезжаете в Ульсан по работе, в длительную командировку или ищете жильё для руководителей? Обращение в Reply Real Estate не является обязанностью, но после удобной консультации может показаться самым естественным решением. Корпоративное жильё и аренда: ulsanzigbang.net
العربية · SAUDI ARABIAإلى شركة أرامكو السعودية وشركائها وموظفيها: إذا كانت مهمتكم مرتبطة بمدينة أولسان أو بمشروعات S-OIL، فإن مكتب Reply Real Estate يساعدكم في السكن التنفيذي، وسكن الشركات، والإقامة طويلة المدة، والعقارات الاستثمارية. الاستعانة بنا ليست إلزامية، لكنها قد تبدو بعد تجربة واحدة وكأنها الخيار المحتوم. أهلاً وسهلاً بسمو ولي العهد الأمير محمد بن سلمان في أولسان. ulsanzigbang.net
Foreign-language text is a marketing introduction. Contract terms, legal explanations and property disclosures are confirmed in Korean or through an agreed professional translation.
울산 수익형 부동산, 숫자부터 확인하십시오
매수 의사가 확인된 고객에게 상세 위치, 현장 안내와 임대차 확인 절차를 제공합니다.
울산직방 매물 상담
응답하라공인중개사 052-266-4446
본 자료는 매도인 제공자료와 일반건축물대장을 기초로 작성한 광고용 안내입니다. 임대수익, 대출, 세금, 개발 가능성과 미래가치를 보장하지 않습니다. 거래 전 등기사항전부증명서, 건축물대장, 임대차계약서, 현장 상태, 권리관계와 세무사항을 확인하시기 바랍니다.
\ud83d\udeab 응답하라공인중개사 작성 자료 · 무단복제 및 재사용 금지
(()=>{
const root=document.getElementById('rr-income-ad');
if(!root) return;
const price=root.querySelector('#rrPrice'),deposit=root.querySelector('#rrDeposit'),monthly=root.querySelector('#rrMonthly');
const annual=root.querySelector('#rrAnnual'),gross=root.querySelector('#rrGrossYield'),equity=root.querySelector('#rrEquityYield');
const fmt=n=>new Intl.NumberFormat('ko-KR',{maximumFractionDigits:0}).format(n)+'만원';
function calculate(){
const p=Number(price.value)||0,d=Number(deposit.value)||0,m=Number(monthly.value)||0,a=m*12,e=p-d;
annual.textContent=fmt(a); gross.textContent=p>0?(a/p*100).toFixed(2)+'%':'-'; equity.textContent=e>0?(a/e*100).toFixed(2)+'%':'-';
}
[price,deposit,monthly].forEach(el=>el.addEventListener('input',calculate)); calculate();
if(matchMedia('(prefers-reduced-motion: reduce)').matches || !matchMedia('(pointer:fine)').matches) return;
const canvas=document.getElementById('chalkLayer'),ctx=canvas.getContext('2d'),tip=document.getElementById('chalkTip');
let particles=[],dpr=Math.min(devicePixelRatio||1,2),last=0;
function resize(){canvas.width=innerWidth*dpr;canvas.height=innerHeight*dpr;canvas.style.width=innerWidth+'px';canvas.style.height=innerHeight+'px';ctx.setTransform(dpr,0,0,dpr,0,0)}
addEventListener('resize',resize);resize();
addEventListener('pointermove',e=>{
tip.style.opacity='.94';tip.style.left=(e.clientX+7)+'px';tip.style.top=(e.clientY-3)+'px';
const now=performance.now();if(now-lasttip.style.opacity='0');
function draw(){ctx.clearRect(0,0,innerWidth,innerHeight);for(const p of particles){p.life-=.025;p.a*=.975;p.x+=(Math.random()-.5)*.25;p.y+=.08;ctx.beginPath();ctx.fillStyle=`rgba(255,216,74,${Math.max(0,p.a*p.life)})`;ctx.arc(p.x,p.y,p.r,0,Math.PI*2);ctx.fill()}particles=particles.filter(p=>p.life>0);requestAnimationFrame(draw)}draw();
})();
|