반응형
네...? 뭘 하라구요?
일단 for문 돌려서 놀이기구 요금 합계부터 구하고.. 가진 돈 - 요금 합계가 0보다 크면 return 요금 합 - 가진돈을 해볼게요..
function solution(price, money, count) {
let sum = 0;
for (let i = 0; i < count; i++ ) {
sum += price+(price*i);
}
return (sum - money > 0 ? sum - money : 0);
}
let price = 3;
let money = 20;
let count = 4;
console.log(solution(price, money, count)); // 결과값 : 10
// 위의 코드 살짝 다듬음
function solution2(price, money, count) {
let sum = 0;
for (let i = 1; i <= count; i++ ) {
sum += price*i;
}
return (sum > money ? sum - money : 0);
}
let price2 = 3;
let money2 = 20;
let count2 = 4;
console.log(solution2(price2, money2, count2)); // 결과값 : 10
요금을 count가 늘어날 때마다 더해주는 sum을 완성해서
"sum - money > 0"가 True면 sum - money를 return해주고, False면 0을 리턴해주어 完成!
다른 사람들은 어떻게 풀었나
// 등차수열? 가우스공식?
// 1 ~ x까지의 합 n * (n + 1) / 2인데 여기에 price배 만큼 곱해주는 거니까 (앞의 식) * price
function solution(price, money, count) {
const tmp = price * count * (count + 1) / 2 - money;
return tmp > 0 ? tmp : 0;
}
let price = 3;
let money = 20;
let count = 4;
console.log(solution(price, money, count));
// ..._ 는 코딩 테스트시 solution 함수에 들어오는 매개변수의 목록을 의미
// 결과적으로, 함수 몸체에서 _[0] 은 price, _[1]은 money, _[2]는 count가 됨
// Math.max 부분은 0과 우리가 계산하고자 하는 결과 둘 중에 더 큰 수를 반환하게 하여, 계산 결과가 음수인 경우, 즉 돈이 부족하지 않은 경우에는 0이 나오도록 한 것
// '++_[2]' 부분은 전위연산자로써, _[2]에 대해 먼저 +1하고 계산하는.. 즉 count+1을 의미
const solution = (..._) => Math.max(_[0]*_[2]*++_[2]/2-_[1], 0);
가우스 공식을 여기서도 쓴다고요?!

그냥 for문 돌릴게요..
반응형
'나의 개발일지 > 알고리즘 테스트' 카테고리의 다른 글
[프로그래머스 - Level 1] 서울에서 김서방 찾기 (JS) (0) | 2022.07.18 |
---|---|
[프로그래머스 - Level 1] 내적 (JS) (0) | 2022.07.18 |
[프로그래머스 - Level 1] 핸드폰 번호 가리기 (JS) (0) | 2022.07.16 |
[프로그래머스 - Level 1] 두 정수 사이의 합 (JS) (0) | 2022.07.15 |
[프로그래머스 - Level 1] 가운데 글자 가져오기 (JS) (0) | 2022.07.15 |