문제설명
새로 생긴 놀이기구는 인기가 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원인데, 놀이기구는 N번째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100원이었다면 2번째에는 200원, 3번째에는 300원으로 요금이 인상합니다. 놀이기구는 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는 지 return 하도록 하세요. 단, 금액이 부족하지 않다면 0을 return 하세요.
제한조건
- 놀이기구의 이용료 price -> 1<=price<=25,000, price는 자연수
- 처음 가지고 있던 금액 money -> 1<=money<=1,000,000, money는 자연수
- 놀이기구의 이용횟수 count -> 1<=count<=2,500, count는 자연수
내가 푼 문제 풀이
function solution(price, money, count) {
let sum = 0; // 총 놀이기구 이용 가격
for(let i = 1; i <=count; i++){
sum += price * i
}
// for문을 사용해서 놀이기구 이용 횟수를 반복한다.
// for문 안에서는 이용료 * 놀이기구 이용 횟수를 곱해서
// sum에 저장한다.
return (sum>money)?(sum-money):0;
// 삼항 연산자를 사용해서 총 놀이기구 이용 가격이 처음 가지고 있던 금액보다 크다는 조건이
// true이면 sum-money를 해서 차액을 구한다.
// false이면 0을 return 한다.
}
다른 사람이 푼 문제 풀이
function solution(price, money, count) {
const tmp = price * count * (count + 1) / 2 - money;
return tmp > 0 ? tmp : 0;
}
-> "가우스의 재림"이라는 식인데.. 봐도 잘 모르겠다. 참고하는 방향으로 가자!
https://programmers.co.kr/learn/courses/30/lessons/82612?language=javascript
'항해 중 > 2주차 알고리즘(프로그래머스)' 카테고리의 다른 글
2일차 → 핸드폰 번호 가리기(replace(), 정규식 표현) (0) | 2021.11.09 |
---|---|
2일차 → 문자열 내 p와 y의 개수(toLowerCase(), 삼항연산자, toUpperCase(), split()) (0) | 2021.11.09 |
배열함수 연습 문제 (0) | 2021.11.08 |
배열함수(forEach, map, filter, some, every, find, findIndex) (0) | 2021.11.08 |
1일차 → 음양 더하기(삼항연산자, *-1) (0) | 2021.11.08 |
댓글