https://programmers.co.kr/learn/courses/30/lessons/82612
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 이하까지의 숫자들과 곱해서 더해주는게 반복이 된다는 것을 알았다.
- 더한 값들을 저장해줄 변수(total)를 선언한다.
- price와 1씩 증가하는 수를 곱하고 그것을 total에 더한다. (1씩 증가하는 수가 count를 넘기 전까지 반복)
- 문제에서 주어진 조건을 예외처리해준다. 금액이 부족하지 않으면 0을 리턴
- 놀이기구를 탔을때 현재 가진 돈이 얼마나 부족한지 리턴한다.
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 |
댓글