Skip to content

Commit cd659ff

Browse files
committed
[Silver V] Title: 너의 평점은, Time: 8 ms, Memory: 69100 KB -BaekjoonHub
1 parent 085f88f commit cd659ff

2 files changed

Lines changed: 94 additions & 0 deletions

File tree

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# [Silver V] 너의 평점은 - 25206
2+
3+
[문제 링크](https://www.acmicpc.net/problem/25206)
4+
5+
### 성능 요약
6+
7+
메모리: 69100 KB, 시간: 8 ms
8+
9+
### 분류
10+
11+
구현, 수학, 문자열
12+
13+
### 제출 일자
14+
15+
2025년 1월 29일 21:49:06
16+
17+
### 문제 설명
18+
19+
<p>인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다!</p>
20+
21+
<p>치훈이의 전공평점을 계산해주는 프로그램을 작성해보자.</p>
22+
23+
<p>전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다.</p>
24+
25+
<p>인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 다음 표와 같다.</p>
26+
27+
<table border="1" cellpadding="1" cellspacing="1" class="table table-bordered" style="width: 150px;">
28+
<tbody>
29+
<tr>
30+
<td style="text-align: center;">A+</td>
31+
<td style="text-align: center;">4.5</td>
32+
</tr>
33+
<tr>
34+
<td style="text-align: center;">A0</td>
35+
<td style="text-align: center;">4.0</td>
36+
</tr>
37+
<tr>
38+
<td style="text-align: center;">B+</td>
39+
<td style="text-align: center;">3.5</td>
40+
</tr>
41+
<tr>
42+
<td style="text-align: center;">B0</td>
43+
<td style="text-align: center;">3.0</td>
44+
</tr>
45+
<tr>
46+
<td style="text-align: center;">C+</td>
47+
<td style="text-align: center;">2.5</td>
48+
</tr>
49+
<tr>
50+
<td style="text-align: center;">C0</td>
51+
<td style="text-align: center;">2.0</td>
52+
</tr>
53+
<tr>
54+
<td style="text-align: center;">D+</td>
55+
<td style="text-align: center;">1.5</td>
56+
</tr>
57+
<tr>
58+
<td style="text-align: center;">D0</td>
59+
<td style="text-align: center;">1.0</td>
60+
</tr>
61+
<tr>
62+
<td style="text-align: center;">F</td>
63+
<td style="text-align: center;">0.0</td>
64+
</tr>
65+
</tbody>
66+
</table>
67+
68+
<p>P/F 과목의 경우 등급이 <code>P</code>또는 <code>F</code>로 표시되는데, 등급이 <code>P</code>인 과목은 계산에서 제외해야 한다.</p>
69+
70+
<p>과연 치훈이는 무사히 졸업할 수 있을까?</p>
71+
72+
### 입력
73+
74+
<p><strong>20</strong>줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로 구분되어 주어진다.</p>
75+
76+
### 출력
77+
78+
<p>치훈이의 전공평점을 출력한다.</p>
79+
80+
<p>정답과의 절대오차 또는 상대오차가 <mjx-container class="MathJax" jax="CHTML" style="font-size: 109%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msup><mjx-mn class="mjx-n"><mjx-c class="mjx-c31"></mjx-c><mjx-c class="mjx-c30"></mjx-c></mjx-mn><mjx-script style="vertical-align: 0.393em;"><mjx-texatom size="s" texclass="ORD"><mjx-mo class="mjx-n"><mjx-c class="mjx-c2212"></mjx-c></mjx-mo><mjx-mn class="mjx-n"><mjx-c class="mjx-c34"></mjx-c></mjx-mn></mjx-texatom></mjx-script></mjx-msup></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mn>10</mn><mrow data-mjx-texclass="ORD"><mo>−</mo><mn>4</mn></mrow></msup></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">\(10^{-4}\)</span></mjx-container> 이하이면 정답으로 인정한다.</p>
81+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
let scoreMap: [Character: Double] = ["A": 4.0, "B": 3.0, "C": 2.0, "D": 1.0, "F": 0.0, "+": 0.5, "0": 0.0]
2+
func toScore(_ alphaScore: String) -> Double {
3+
alphaScore.reduce(0.0) { $0 + scoreMap[$1]! }
4+
}
5+
var totalCredit = 0.0
6+
var totalScore = 0.0
7+
(0..<20).forEach { _ in
8+
let input = readLine()!.split { $0 == " " }.suffix(2)
9+
guard input.last! != "P" else { return }
10+
totalScore += toScore(String(input.last!)) * Double(input.first!)!
11+
totalCredit += Double(input.first!)!
12+
}
13+
print(totalScore / totalCredit)

0 commit comments

Comments
 (0)