[JavaScript] 부족한 금액 계산하기 Lv1

Date:     Last Updated:

문제명

문제 프로그래머스 FAQ 내용을 보니 카카오나 기업의 문제들은 저작권이 있으니 풀이를
github나 개인블로그에 올리지 말라고 되어 있어서 링크로 대체합니다.

출처: Programmers
부족한 금액 계산하기

문제의 이해

주어진 조건대로만 풀면 크게 이해할 필요가 없는 문제. 다만 주어진 범위가 크기 때문에 c++이나 java 같은 언어로 풀때는 자료형의 범위를 잘 생각해서 선언하고 풀어야 할듯. -주어진 값 기본 놀이기구 비용 price 현재 가지고 있는 비용 money 놀이기구를 탄 횟수 count

-조건 놀이기구를 탈때마다 그 횟수 x만큼 price * x가 된다. 주어진 price, count를 계산해서 money를 넘는다면 얼마나 부족한지, 넘지 않으면 0을 반환

내가 생각한 풀이 방법

결과만 먼저 말하자면 +5점을 받았다. 내가 추측하는 이유는 어려운 문제는 아니지만 코드 가독성이 높이려고 계산하는 부분을 잘게 쪼개서 함수를 2개나 써서 같다. 다만 함수명은 지금 다시보니 완전 별로 같다. 점수를 자동으로 측정하는 프로그램이 코드의 가독성은 평가해도 네이밍은 평가하지 않나보다. (풀이는 코드에 주석으로 설명)

풀이

첫 번째 풀이

그냥 너무 solution 함수에만 몰아서 푸는 것 같아서 계산 부분들을 기능별로 쪼갰다. 두 값을 곱해서 반환해주는 multiply함수 price, count 값을 넣어주면 price를 count의 수만큼 price* 1,2..count 까지의 모든 수를 더해서 반환해준다. 반환된 totalPrice값을 money에서 빼주고 그 값이 0보다 작으면 money * -1 을 해줘서 반환하고(money에서 -해주니까 음수가 나온다. 결과값은 범위만 필요하기 때문에 음수제외) 0 혹은 0보다 크면 0을 반환해준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  function solution(price, money, count) {
      var answer = -1;
      
      money -= totalPrice(price, count);  //주어진 money에서 총 비용을 뺌.

      //지불비용이 가진 돈보다 적으면 0 반환, 아니면 -1해서 money 반환(이유는 위에서 값을 빼기 때문에 음수가 되므로) 
      return money >= 0 ? 0 : money * -1;
  }

  //price와 count를 넣어주면 사용한 이용로를 전부 합산해서 반환해줌.
  function totalPrice (price, count){
      
      var totalSum = 0;
      
      for (let i = 1; i <= count; i++) {
          totalSum += multiply(price, i);
      }
      return totalSum;
  }

  //아주 간단한 곱셈만 해주는 함수
  function multiply(price, count){
      return price * count;
  }

  //질문글을 보니까 js로 풀어서 오류가 없었던 거지
  //아마 java나 c++로 풀었으면 자료형의 크기로 인해서 오류가 났을 듯


Leave a comment