12. 부족한 금액 계산하기 (JavaScript)
문제 설명
새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 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 a = Array(count).fill(price).map((v, i) => (i + 1) * v) // 길이가 count, 초항과 등차가 price인 등차수열
return a.reduce((b,c)=>b+c) - money <= 0 ? 0 : a.reduce((b,c)=>b+c) - money //합계 - money
}
11. x만큼 간격이 있는 n개의 숫자 (JavaScript) (tistory.com)
11. x만큼 간격이 있는 n개의 숫자 (JavaScript)
문제 설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성
l-0-l.tistory.com
바로 직전에서 사용했던 식을 그대로 들고와 a에 넣었다.
그리고 리듀스로 합계 함수를 만들고 삼항연산으로 0보다 작거나 같으면 0을 리턴하도록 했다.
나름 깔끔하게 코딩한거같은데 찝찝한 느낌..
모범 답안
function solution(price, money, count) {
const tmp = price * count * (count + 1) / 2 - money;
return tmp > 0 ? tmp : 0;
}
가우스의 공식으로 코딩했다....
1+2+3....+100
+)100+99+98..1
=101+101+101...+101
101이 100개 이므로 n(n+1)
1+2+3....+100 이 두번 반복 되므로 n(n+1)/2
1부터 n까지의 자연수의 합은 다음과 같다.
여기서 k에 price를 넣어준다.
공부 많이 해야겠다.