코딩/프로그래머스 코딩테스트

[프로그래머스] 부족한 금액 계산하기

민쯔 2021. 11. 11. 20:57
728x90
반응형

안녕하세요. 민쯔입니다.😊

이번에 부족한 금액 계산하기를 풀어보았는데요.
이문제는 이벤트성 문제 같고 쉬운 편에 속해서 5~10분 컷으로 푼 것 같습니다.

그럼 해결방법에 대해 소개하겠습니다.

function solution(price, money, count) {
    var answer = 0;
    
    // 필요한 놀이기구의 이용 금액
    for(let i=1; i <= count; i++) answer += i * price;
    // 부족한 금액 구하기
    return answer < money ? 0 : answer - money;
}

이 문제는 "놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지"를 구하는 문제 입니다.

 

입출력 예 설명에서

테스트 1

이용금액(price)이 3인 놀이기구를 4번 타고 싶은 고객이 현재 가진 금액이 20이라면, 총 필요한 놀이기구의 이용 금액은 30 (= 3+6+9+12) 이 되어 30 - 20 = 10이 됩니다.

이걸 토대로 구하면 되겠죠😁

아! 여기서 가장 중요한 문장은 "단, 금액이 부족하지 않으면 0을 return 하세요." 이 문장이에요.
이 문장의 내용을 어길 경우 테스트 제출 후 채점하기에서 테스트 4번에 틀리게 돼요.
이 문장에 대한 해결방안은 뒤에서 설명하겠습니다.

 

그럼 이제 코드 설명하러~ ㄱㄱ

필요한 놀이기구의 이용 금액

 var answer = 0;
    
// 필요한 놀이기구의 이용 금액
for(let i=1; i <= count; i++) answer += i * price;

console.log(answer); // 테스트 1 : 30

먼저 anwer =0;으로 빼주었습니다.
여기서 anwer은 "총 필요한 놀이기구의 이용 금액"으로 생각하시면 됩니다.

  • anwer = 총 필요한 놀이기구의 이용 금액

 

저는 총 필요한 놀이기구의 이용 금액을 구하기 위해 for문을 썼는데요.
테스트 1을 예시로 들자면

  • 3 * 1 = 3
  • 3 * 2 = 6
  • 3 * 3 = 9
  • 3 * 4 = 12
  • 3 + 6 + 9 + 12 = 30

이렇게 돼야 됩니다.

 

이걸 for문으로 구현을 하면

  • 1부터 곱해야 되니까 i = 1
  • 테스트 1에서 4까지 곱했으니 i <= count
  • 누적 값을 구하기 위해 answer += i * price;

여기서 for문 안의 문장이 한 줄이라서 중괄호 {}를 생략했습니다.

 

부족한 금액 구하기

// 부족한 금액 구하기
return answer < money ? 0 : answer - money;

앞에서 "단, 금액이 부족하지 않으면 0을 return 하세요." 문장이 중요하다고 했죠?
지금 이 코드가 이 문장의 해결방안에 대해 쓴 코드입니다.

저는 삼항 연산자를 사용했는데요.
삼항 연산자는 간단한 조건문 쓸때 참 좋은 것 같아요.
(물론 else if를 안 써도 될 경우는 if문이 좋아요!!)

 

"금액이 부족하지 않으면 0을 return" 하라는 말은
총 필요한 놀이기구의 이용 금액 < 현재 가진 금액이면 0으로 하라는 거니까.

  • answer < money 이면
  • true -> 0
  • false -> answer - money

구했습니다.

728x90
반응형