[백준 11340] Making the Grade? (C#, C++) - soo:bak
작성일 :
문제 링크
설명
세 과목 점수가 주어질 때 평균 90 이상을 만들기 위한 최소 기말 점수를 구하는 문제입니다.
접근법
먼저 기존 세 점수의 가중 합을 계산합니다.
다음으로 기말 점수에 대한 식을 정리해 필요한 최소 정수를 구합니다.
이후 0~100 범위에 들어오지 않으면 불가능으로 판단합니다.
마지막으로 가능하면 최소 점수를 출력하고, 아니면 impossible을 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
using System.Text;
class Program {
static void Main() {
var parts = Console.In.ReadToEnd().Split();
var idx = 0;
var t = int.Parse(parts[idx++]);
var sb = new StringBuilder();
for (var i = 0; i < t; i++) {
var p = int.Parse(parts[idx++]);
var t1 = int.Parse(parts[idx++]);
var m = int.Parse(parts[idx++]);
var sum = 15 * p + 20 * t1 + 25 * m;
var need = 9000 - sum;
var f = (need + 39) / 40;
if (f < 0) f = 0;
if (f > 100) sb.AppendLine("impossible");
else sb.AppendLine(f.ToString());
}
Console.Write(sb);
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t; cin >> t;
while (t--) {
int p, t1, m; cin >> p >> t1 >> m;
int sum = 15 * p + 20 * t1 + 25 * m;
int need = 9000 - sum;
int f = (need + 39) / 40;
if (f < 0) f = 0;
if (f > 100) cout << "impossible\n";
else cout << f << "\n";
}
return 0;
}