작성일 :

문제 링크

25704번 - 출석 이벤트

설명

출석 도장 수에 따른 할인 쿠폰을 적용해 지불해야 할 최소 금액을 구하는 문제입니다.


접근법

출석 도장 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;
}