본문 바로가기
코테연습

57. 부족한 금액 계산하기 Javascript

by hxunz 2022. 6. 8.

https://programmers.co.kr/learn/courses/30/lessons/82612

 

코딩테스트 연습 - 부족한 금액 계산하기

새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이

programmers.co.kr

 

1. 문제에 대한 이해

  • 우리가 풀어야 할 문제는 무엇인가?
     - 놀이기구 이용료가 이용할때마다 N배가 오르는데 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return
  • 주어진 자료는 무엇인가?
     - price : 이용료
     - money : 처음 가지고 있던 금액
     - count : 놀이기구의 이용 횟수
  • 조건은 무엇인가?
     - 금액이 부족하지 않으면 0을 return


 

2. 계획

  • 이 문제를 푸는데 있어서 유용하게 쓸 수 있는 지식은 무엇인가?
     - for문

 

price가 3이고

count가 4일때 문제에서 제시한 대로 계산을 해보면

1번째 놀이기구 탈때 비용 = 3*1

2번째 놀이기구 탈때 비용 = 3*2

3번째 놀이기구 탈때 비용 = 3*3

이런식으로 비용이 증가하고 이 비용들을 다 더했을때 money와의 차이를 구하는 문제이다.

 

price를 1부터 count 이하까지의 숫자들과 곱해서 더해주는게 반복이 된다는 것을 알았다.

 

 

  1. 더한 값들을 저장해줄 변수(total)를 선언한다. 
  2. price와 1씩 증가하는 수를 곱하고 그것을 total에 더한다. (1씩 증가하는 수가 count를 넘기 전까지 반복)
  3. 문제에서 주어진 조건을 예외처리해준다. 금액이 부족하지 않으면 0을 리턴
  4. 놀이기구를 탔을때 현재 가진 돈이 얼마나 부족한지 리턴한다.

 

3. 실행

  • 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
const solution = (price, money, count) => {
  let total = 0; 

  for (let index = 0; index <= count; index++) {
    total += price*index
  };
  return total < money ? 0 : total - money;
};

test('부족한금액계산하기', () => {
  expect(solution(3, 20, 4)).toEqual(10);
});

 

 

4. 반성 

문제 그대로 price가 점점 몇배로 비싸지는 부분을 그냥 써봤다. 
그랬더니 반복되는 부분을 발견할 수 있었다. 
그래서 이 반복처리를 어떻게 할 지 고민하다가 제일 익숙한 for문을 사용하였고 
예외처리까지 해주니 생각보다 쉽게 풀 수 있었다. 

주어진 자료를 이용해서 문제를 해결할 때 당장 어떤식으로 풀어야할지 모르겠는 경우가 많은데 
일단 직접 손으로라도 써보고 문제를 어떻게 풀 수 있는지에 대해서 생각해보는 것도 괜찮은 방법 같다. 

앞으로 더 많은 문제를 풀어서 문제 해결에 익숙해지도록 해야겠다.

'코테연습' 카테고리의 다른 글

59. 예산 Javascript  (0) 2022.06.08
58. 실패율 Javascript  (0) 2022.06.08
56. 폰켓몬 Javascript  (0) 2022.05.31
55. 체육복 Javascript  (0) 2022.05.31
54. 모의고사 Javascript  (0) 2022.05.29

댓글