알고리즘
[BAEKJOON] 25704 출석 이벤트
mAlfred
2024. 1. 17. 17:42
반응형
문제
쇼핑몰에서 30일간 출석 이벤트를 진행한다. 쇼핑몰의 사이트를 방문하면 1일 1회 출석 도장을 받을 수 있고, 출석 도장을 여러 개 모아서 할인 쿠폰으로 교환할 수 있다.
출석 도장의 개수에 따라 교환할 수 있는 할인 쿠폰의 종류가 달라진다.
- 출석 도장 5개 → 500원 할인 쿠폰
- 출석 도장 10개 → 10% 할인 쿠폰
- 출석 도장 15개 → 2,000원 할인 쿠폰
- 출석 도장 20개 → 25% 할인 쿠폰
경태가 모은 출석 도장의 개수와 구매할 물건의 가격이 주어졌을 때, 경태가 지불해야 하는 최소 금액을 구하시오. 단, 할인 쿠폰은 최대 하나만 적용 가능하다. 할인 금액이 물건의 가격보다 더 큰 경우 지불해야 하는 금액은 0원이다.
입력
첫째 줄에 경태가 모은 출석 도장의 개수 N이 주어진다.
둘째 줄에 경태가 구매할 물건의 가격 P가 주어진다. P는 항상 100의 배수이다.
출력
첫째 줄에 정답을 출력한다.
제한
- 0 ≤ N ≤ 30
- 100 ≤ P ≤ 50,000
- 입력으로 주어지는 모든 수는 정수이다.
예제 입력 1 복사
12
50000
예제 출력 1 복사
45000
예제 입력 2 복사
23
3000
예제 출력 2 복사
1000
그냥 if문으로 쓰고,
모든 경우의 수를 받아서 최소 값을 출력하게 작성을 햇었다 (처음엔)
import sys
n, p = map(int, sys.stdin.readlines())
v = []
if n >= 20:
v.append(p* 0.75)
if n >= 15:
v.append(p - 2000)
if n >= 10:
v.append(p * 0.9)
if n >= 5:
v.append(p - 500)
c = min(v)
if c < 0:
print(0)
else:
print(int(c))
이렇게 제출하니까 에러가 나타나더라
그래서 문제 입력 범위 잘 보니까 쿠폰 갯수가 0일때도 있는거임 ㄷㄷ
그러면 할인을 안 받을 수 있다는 것이고?
import sys
n, p = map(int, sys.stdin.readlines())
v = []
if n >= 20:
v.append(p* 0.75)
if n >= 15:
v.append(p - 2000)
if n >= 10:
v.append(p * 0.9)
if n >= 5:
v.append(p - 500)
v.append(p)
c = min(v)
if c < 0:
print(0)
else:
print(int(c))
끗.
반응형