[백준/파이썬] 10707번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 10707번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
JOI군이 살고 있는 지역에는 X사와 Y사, 두 개의 수도회사가 있다. 두 회사의 수도요금은 한 달간 수도의 사용량에 따라 다음과 같이 정해진다.
-
X사 : 1리터당 A엔.
-
Y사 : 기본요금은 B엔이고, 사용량이 C리터 이하라면 요금은 기본요금만 청구된다. 사용량이 C리터가 넘었을 경우 기본요금 B엔에 더해서 추가요금이 붙는다. 추가요금은 사용량이 C리터를 넘었을 경우 1리터를 넘었을 때마다 D엔이다.
JOI군의 집에서 한 달간 쓰는 수도의 양은 P리터이다.
수도요금이 최대한 싸게 되도록 수도회사를 고를 때, JOI군의 집의 1달간 수도요금을 구하여라.
입력 요약
입력은 5줄이고 한 줄에 하나씩 정수가 입력된다.
-
첫 번째 줄에는 X사의 1리터당 요금 A가 입력된다.
-
두 번째 줄에는 Y사의 기본요금 B가 입력된다.
-
세 번째 줄에는 Y사의 요금이 기본요금이 되는 사용량의 상한 C가 입력된다.
-
네 번째 줄에는 Y사의 1리터 당 추가요금 D가 입력된다.
-
다섯 번째 줄에는 JOI군의 집에서 사용하는 한 달간 수도의 양 P가 입력된다.
입력되는 정수 A,B,C,D,P는 전부 1 이상 10000 이하이다.
출력 요약
JOI군의 집에서 지불하는 한 달간 수도요금을 첫째 줄에 출력한다.
코드
datas = [int(input()) for _ in range(5)]
x = datas[0] * datas[4]
y = datas[1] + ((datas[3]*(datas[4]-datas[2])) if datas[2] < datas[4] else 0)
print(min(x, y))
설명
핵심은 구현 관점에서 JOI군이 살고 있는 지역에는 X사와 Y사, 두 개의 수도회사가 있다. 두 회사의 수도요금은 한 달간 수도의 사용량에 따라 다음과 같이 정해진다.
-
X사 : 1리터당 A엔.
-
Y사 : 기본요금은 B엔이고, 사용량이 C리터 이하라면 요금은 기본요금만 청구된다. …를 만족하도록 로직을 구성하는 것입니다.
코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.
경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.
댓글남기기