https://school.programmers.co.kr/learn/courses/30/lessons/82612
처음에 작성한 코드
function solution(price, money, count) {
var answer = 0;
let firstPrice = price;
for (let n = 1; n <= count; n++) {
money -= price;
if (money >= 0) {
price += firstPrice;
} else {
answer = money * -1;
break;
}
}
if (money >= 0)
answer = 0;
return answer;
}
코드 실행은 잘 됐는데 정답 제출을 하면 대부분의 테스트에서 실패해버림
원인
돈이 부족한 순간에 멈추는게 아니라, count만큼 탄다고 했을 때 부족한 금액을 구하는 것이기 때문에, 돈이 부족하더라도 break하지 않고 계속 price값을 증가시켜줬어야 한다.
수정한 코드
function solution(price, money, count) {
var answer = 0;
let firstPrice = price;
for (let n = 1; n <= count; n++) {
money -= price;
if (money < 0)
answer = money * -1;
price += firstPrice;
}
if (money >= 0)
answer = 0;
return answer;
}
다른 방법
돈에서 탑승 비용을 일일히 빼지 않고, 총 비용을 먼저 구한 뒤, 돈과 비교를 해서 모자란지 판단하는 방법
function solution(price, money, count) {
var answer = 0;
let totalPrice = 0;
for (let n = 1; n <= count; n++)
totalPrice += price * n;
return money >= totalPrice ? 0 : totalPrice - money;
}
이 편이 코드가 좀 더 깔끔한것 같다.
'알고리즘 문제' 카테고리의 다른 글
데일리 루틴 36번 - 문자열 다루기 기본 (0) | 2024.08.20 |
---|---|
데일리 루틴 29번 - 제일 작은 수 제거하기 (0) | 2024.08.20 |