1차 공부/알고리즘

부족한 금액 계산하기

공대탈출 2022. 11. 23. 09:59
문제 설명
새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다.
이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다.
즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.

놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록
solution 함수를 완성하세요.

단, 금액이 부족하지 않으면 0을 return 하세요.

 

제한 조건
놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수
처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수
놀이기구의 이용 횟수 count : 1 ≤ count ≤ 2,500, count는 자연수

 

 

function solution(price, money, count) {
    var answer = 0;
    let total = 0;
    for (let i=1; i<=count; i++){
        total = total + price*i
    }
    answer = total-money   
    
    return answer;
}

처음으로 작성했던 코드이다.
아마 소지금액이 더 클 때와 같을때를 가정하지 않아 틀렸다.

 

 

function solution(price, money, count) {
    var answer = 0;
    let total = 0;
    for (let i=1; i<=count; i++){   //사용되는 돈의 총 합을 구하기 위한 for문
        total = total + price*i //total에 가격의 i배를 계속 더함
    }
    if (total > money) {    //만약 사용금액이 소지금액보다 크다면
        answer = total-money    //answer은 사용금액-소지금액
    } else if (total = money){  //만약 사용금액과 소지금액이 같다면
        answer = 0  //answer = 0
    } else {    //만약 소지금액이 사용금액보다 크다면
        answer = money-total    //answer은 소지금액 - 사용금액
    }
    
    return answer;
}

일단 내가 직접 풀었던 코드이다.

 

 

function solution(price, money, count) {
    let total = 0;
    for (let i=1; i<=count; i++){   
        total = total + price*i 
    }
    if (total > money) {    
        return total-money    
    } else {
        return 0
    }
}

코드 간결화를 진행한 모습이다.

문제를 자세히 보니 소지금액이 총 사용금액보다 크다면 0, 같다면 0을 반환하면 되는거였다.

그래서 총 사용금액이 클때만 계산하고 아니라면 0을 반환하도록 하였다.

 

 

function solution(price, money, count) {
    let answer = 0;

    for (let i = 1; i <= count; i++) {
        answer += price * i;
    }

    return answer > money ? answer - money : 0;
}

다른사람이 푼 삼항 연산자를 이용한 코드이다. ( ~ ? ~ : ~ )

'1차 공부 > 알고리즘' 카테고리의 다른 글

나누어 떨어지는 숫자 배열  (0) 2022.11.23
2016년  (0) 2022.11.23
x만큼 간격이 있는 n개의 숫자  (0) 2022.11.22
행렬더하기  (0) 2022.11.22
핸드폰 번호 가리기  (0) 2022.11.22