[파이썬][백준 10103번] 과제
1. 문제
[Bronze IV] 과자 - 10156
성능 요약
메모리: 30840 KB, 시간: 68 ms
분류
사칙연산(arithmetic), 수학(math)
문제 설명
동수는 제과점에 과자를 사러 가는데 현재 가진 돈이 모자랄 경우 부모님께 모자란 돈을 받으려고 한다. 과자 한 개의 가격이 K, 사려고 하는 과자의 개수가 N이고, 현재 가진 돈의 액수를 M이라 할 때 여러분은 동수가 부모님께 받아야 하는 모자란 돈을 계산하려고 한다.
예를 들어, 과자 한 개의 가격이 30원, 사려고 하는 과자의 개수가 4개, 현재 동수가 가진 돈이 100원이라 할 때, 동수가 부모님께 받아야 하는 돈은 20원이다. 과자 한 개의 가격이 250원, 사려고 하는 과자의 개수가 2개, 현재 동수가 가진 돈이 140원이라 할 때, 동수가 부모님께 받아야 하는 돈은 360원이다. 과자 한 개의 가격이 20원, 사려고 하는 과자의 개수가 6개, 현재 동수가 가진 돈이 120원이라 할 때 동수가 부모님께 받아야 하는 돈은 0원이다. 과자 한 개의 가격이 20원, 사려고 하는 과자의 개수가 10개, 현재 동수가 가진 돈이 320원이라 할 때 동수가 부모님께 받아야 하는 돈은 역시 0원이다.
과자 한 개의 가격, 사려고 하는 과자의 개수와 동수가 현재 가진 돈의 액수가 주어질 때 동수가 부모님께 받아야 하는 돈의 액수를 출력하는 프로그램을 작성하시오.
입력
첫 번째 줄에는 과자 한 개의 가격 K, 사려고 하는 과자의 개수 N, 현재 동수가 가진 돈 M이 각각 공백을 사이에 두고 주어진다. 단, K, N은 1,000 이하의 양의 정수이고, M은 10만 이하의 양의 정수이다. (1 ≤ K, N ≤ 1,000, 1 ≤ M ≤ 100,000이다.)
출력
첫 줄에 동수가 부모님께 받아야 하는 돈의 액수를 출력한다.
출처: 백준, https://https://www.acmicpc.net/
2. 해결방법 시간복잡도
- 단순 코딩 O(1)
3. 문제 해결 및 코드
-
주석을 참고하면서 이해를 돕습니다.
4. 알고리즘 및 해설
- 3개의 값을 map(int, input().split())함수를 통해 정수형으로 띄어쓰기를 기준으로 입력받는다.
- 본문이 긴데, 결론은 과자 가격에 개수를 곱한 값이 동수가 가진 돈으로 살 수 있는가를 묻는 것이다.
- if문을 통해 살 수 있는 경우와 살 수 없는 경우를 만들어 준다.
5. 짚고 넘어가기
- sys.stdin.readline() 함수를 통해 메모리 효율을 줄이는 방법이다.
- 기존의 방식과 동일하게 사용해도 되나, input = sys.stdin.readline 이라 할 경우 여러변 input()을 해야하는 경우 유용하다.