[백준 25704] 출석 이벤트 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
출석 도장 수에 따른 할인 쿠폰을 적용해 지불해야 할 최소 금액을 구하는 문제입니다.
접근법
출석 도장 5개부터 500원 할인, 10개부터 10% 할인, 15개부터 2000원 할인, 20개부터 25% 할인 쿠폰을 사용할 수 있습니다.
적용 가능한 모든 할인을 계산하고 그중 최소값을 선택합니다.
할인 결과가 0보다 작으면 0으로 보정합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
class Program {
static void Main() {
var n = int.Parse(Console.ReadLine()!);
var p = int.Parse(Console.ReadLine()!);
var best = p;
if (n >= 5) best = Math.Min(best, p - 500);
if (n >= 10) best = Math.Min(best, p * 90 / 100);
if (n >= 15) best = Math.Min(best, p - 2000);
if (n >= 20) best = Math.Min(best, p * 75 / 100);
if (best < 0) best = 0;
Console.WriteLine(best);
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, p; cin >> n >> p;
int best = p;
if (n >= 5) best = min(best, p - 500);
if (n >= 10) best = min(best, p * 90 / 100);
if (n >= 15) best = min(best, p - 2000);
if (n >= 20) best = min(best, p * 75 / 100);
if (best < 0) best = 0;
cout << best << "\n";
return 0;
}