[프로그래머스] 부족한 금액 계산하기
2021.11.11에 푼 문제입니다.
이번 문제는 이벤트성 문제 같고 쉬운 편에 속해서 5~10분 컷으로 푼 것 같습니다.
이 문제는 "놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지"를 구하는 문제예요.
이 문제에서는 가장 중요한 문장은 "단, 금액이 부족하지 않으면 0을 return 하세요." 이 문장이에요.
이 문장의 내용을 어길 경우 테스트 제출 후 채점하기에서 테스트 4번에 틀리게 돼요.
이 문장에 대한 해결방안에서 설명하겠습니다.
해결방안
function solution(price, money, count) {
var answer = 0;
// 필요한 놀이기구의 이용 금액
for(let i=1; i <= count; i++) answer += i * price;
// 부족한 금액 구하기
return answer < money ? 0 : answer - money;
}
해결방안 순서
- 필요한 놀이기구의 이용 금액
- 부족한 금액 구하기
1단계. 필요한 놀이기구의 이용 금액
필요한 놀이기구의 이용 금액을 구하기 위해 for문을 사용해 주었습니다.
입출력 예 설명을 읽어보면
테스트 1로 설명(price = 3; money = 20; count =4; result = 10)
count가 4번이고 price가 3 임으로 3+6+9+12=30 이 과정까지를 코드로 나타내야 됩니다.
// 1단계. 필요한 놀이기구의 이용 금액
for(let i=1; i <= count; i++) answer += i * price;
이 코드가 위에서 코드로 나타내야 되는 부분입니다.
- for(let i=1; i <= count; i++) : 테스트 1일 경우 1, 2, 3, 4 까지 반복
- answer += i * price; : 테스트1일 경우 answer이 3, 9, 18, 30으로 됨 자세한 설명은 아래에서👇
테스트 1일 경우
i=1일때
answer += i * price; -> 0 += 1*3 -> answer = 3
i=2일때
answer += i * price; -> 3 += 2*3 -> answer = 3 + 6 = 9
i=3일때
answer += i * price; -> 9 += 3*3 -> answer = 9 + 9 = 18
i=4일때
answer += i * price; -> 18 += 4*3 -> answer = 18 + 12 = 30
for문에서는 {}안의 문장이 한 줄이라면 {}이 생략이 가능해서
for(let i=1; i <= count; i++) answer += i * price
이렇게 써주었습니다.
테스트 1
(price = 3; money = 20; count =4; result = 10)
i=1일때
answer += i * price; -> 0 += 1*3 -> answer = 3
i=2일때
answer += i * price; -> 3 += 2*3 -> answer = 3 + 6 = 9
i=3일때
answer += i * price; -> 9 += 3*3 -> answer = 9 + 9 = 18
i=4일때
answer += i * price; -> 18 += 4*3 -> answer = 18 + 12 = 30
2단계. 부족한 금액 구하기
이제 "현재 자신이 가지고 있는 금액에서 얼마가 모자라는지"를 구해야 되는데요.
그전에 앞에서 "단, 금액이 부족하지 않으면 0을 return 하세요." 문장이 중요하다고 했습니다.
- 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지
- 단, 금액이 부족하지 않으면 0을 return
이 두문장 가지고 조건문으로 코드를 짰습니다.
// 2단계. 부족한 금액 구하기
return answer < money ? 0 : answer - money;
이 코드가 위에 두문장을 가지고 조건문으로 쓴 코드입니다.
여기서 삼항 연산자를 사용했는데요.
삼항 연산자는 간단한 조건문 쓸 때 참 좋은 것 같아요.
(물론 else if를 안 써도 될 경우는 if문이 좋아요!!)
삼항 연산자
구문 : 조건 ? true : false
- 조건이 true이면 true를 실행
- 조건이 false이면 false를 실행
위 코드에서는
answer < money ? 2번문장 : 1번문장;
이렇게 구하였습니다.
테스트 1
(price = 3; money = 20; count =4; result = 10)
1단계에서 answer = 30;
return answer < money ? 0 : answer - money;
answer < money -> 30<20 -> false
answer - money -> 30-20 = 10
여기까지 프로그래머스 부족한 금액 계산하기 해결방안에 대해 설명해보았습니다.