안녕하세요. 민쯔입니다.😊
이번에 부족한 금액 계산하기를 풀어보았는데요.
이문제는 이벤트성 문제 같고 쉬운 편에 속해서 5~10분 컷으로 푼 것 같습니다.
그럼 해결방법에 대해 소개하겠습니다.
function solution(price, money, count) {
var answer = 0;
// 필요한 놀이기구의 이용 금액
for(let i=1; i <= count; i++) answer += i * price;
// 부족한 금액 구하기
return answer < money ? 0 : answer - money;
}
이 문제는 "놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지"를 구하는 문제 입니다.
입출력 예 설명에서
이용금액(price)이 3인 놀이기구를 4번 타고 싶은 고객이 현재 가진 금액이 20이라면, 총 필요한 놀이기구의 이용 금액은 30 (= 3+6+9+12) 이 되어 30 - 20 = 10이 됩니다.
이걸 토대로 구하면 되겠죠😁
아! 여기서 가장 중요한 문장은 "단, 금액이 부족하지 않으면 0을 return 하세요." 이 문장이에요.
이 문장의 내용을 어길 경우 테스트 제출 후 채점하기에서 테스트 4번에 틀리게 돼요.
이 문장에 대한 해결방안은 뒤에서 설명하겠습니다.
그럼 이제 코드 설명하러~ ㄱㄱ
필요한 놀이기구의 이용 금액
var answer = 0;
// 필요한 놀이기구의 이용 금액
for(let i=1; i <= count; i++) answer += i * price;
console.log(answer); // 테스트 1 : 30
먼저 anwer =0;으로 빼주었습니다.
여기서 anwer은 "총 필요한 놀이기구의 이용 금액"으로 생각하시면 됩니다.
- anwer = 총 필요한 놀이기구의 이용 금액
저는 총 필요한 놀이기구의 이용 금액을 구하기 위해 for문을 썼는데요.
테스트 1을 예시로 들자면
- 3 * 1 = 3
- 3 * 2 = 6
- 3 * 3 = 9
- 3 * 4 = 12
- 3 + 6 + 9 + 12 = 30
이렇게 돼야 됩니다.
이걸 for문으로 구현을 하면
- 1부터 곱해야 되니까 i = 1
- 테스트 1에서 4까지 곱했으니 i <= count
- 누적 값을 구하기 위해 answer += i * price;
여기서 for문 안의 문장이 한 줄이라서 중괄호 {}를 생략했습니다.
부족한 금액 구하기
// 부족한 금액 구하기
return answer < money ? 0 : answer - money;
앞에서 "단, 금액이 부족하지 않으면 0을 return 하세요." 문장이 중요하다고 했죠?
지금 이 코드가 이 문장의 해결방안에 대해 쓴 코드입니다.
저는 삼항 연산자를 사용했는데요.
삼항 연산자는 간단한 조건문 쓸때 참 좋은 것 같아요.
(물론 else if를 안 써도 될 경우는 if문이 좋아요!!)
"금액이 부족하지 않으면 0을 return" 하라는 말은
총 필요한 놀이기구의 이용 금액 < 현재 가진 금액이면 0으로 하라는 거니까.
- answer < money 이면
- true -> 0
- false -> answer - money
구했습니다.
'코딩 > 프로그래머스 코딩테스트' 카테고리의 다른 글
[프로그래머스] 비밀지도 (0) | 2021.12.08 |
---|---|
[프로그래머스] 나머지가 1이 되는 수 찾기 (0) | 2021.11.20 |
[프로그래머스] 최소직사각형 (0) | 2021.11.09 |
[프로그래머스] 2016년 (0) | 2021.11.05 |
[프로그래머스] 3진법 뒤집기 (0) | 2021.11.05 |