10984번: 내 학점을 구해줘
문제 )
게으른 근우는 열심히 놀다가 문득, 자신의 학점 평균이 얼마일지 궁금해졌다. 학사시스템도 들어가기 귀찮아하는 근우를 위해 구해주도록 하자.
입력 :
첫 번째 줄에 학기의 수 T가 주어진다. 두 번째 줄부터 T개 학기에 대한 정보가 주어진다.
각 학기에 대한 정보는 다음과 같이 구성되어 있다. 첫 번째 줄에 들었던 과목의 수 N이 주어지고, 다음 N개 줄에 걸쳐서 N개 과목들의 학점 C와 성적 G가 주어진다. (1 ≤ N ≤ 10, 1 ≤ C ≤ 6, C는 정수) G는 {0, 0.7, 1, 1.3, 1.7, 2, 2.3, 2.7, 3, 3.3, 3.7, 4, 4.3} 중 하나이며 소수 부분은 최대 한 자리까지 주어진다.
출력 :
각 학기에 대해 근우의 총 학점과 평점(GPA)을 출력한다. 정답과의 절대 오차는 10-1까지 허용한다.
풀이)
소수점을 다룰 줄 아는지 물어보는 문제였다.
여기서 사용된 핵심 코드는
`cout.fixed` => 소수점 고정 메소드.
`cout.precision()` => 소수점 자리 조절 메소드
`cout.unsetf(::ios::fixed); => 소수점 고정 해제 메소드
위의 3개 메소드가 가장 중요했다.
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
28
29
30
31
32
33
34
35
36
|
#include <iostream>
using namespace std;
int main()
{
int semester;
cin >> semester;
for (int i = 0; i < semester; i++) {
int data;
cin >> data;
int credit = 0;
float grade = 0;
for (int j = 0; j < data; j++) {
int t_credit = 0;
float t_grade = 0;
cin >> t_credit >> t_grade;
credit += t_credit;
grade += t_grade * t_credit;
}
// fixed는 고정 소수점 표기를 위한 함수이다.
cout << credit << ' ' << fixed;
// 소수점 자리 조절
cout.precision(1);
cout << float(grade / credit) << endl;
// 0자리로 조절하거나
// cout.unsetf(::ios::fixed); 를 사용하면 된다.
cout.precision(0);
}
return 0;
}
|
cs |
출처 : https://www.acmicpc.net/problem/10984
10984번: 내 학점을 구해줘
게으른 근우는 열심히 놀다가 문득, 자신의 학점 평균이 얼마일지 궁금해졌다. 학사시스템도 들어가기 귀찮아하는 근우를 위해 구해주도록 하자.
www.acmicpc.net
'Develop > 백준 (Cpp)' 카테고리의 다른 글
[백준] 2442번: 별 찍기 - 5 (C++) (0) | 2023.01.20 |
---|---|
[백준] 10833번: 사과 (C++) (0) | 2023.01.20 |
[백준] 1408번: 24 (C++) (0) | 2023.01.19 |
[백준] 16472번: 고냥이 (C++) (0) | 2022.06.29 |
[백준] 1644번: 소수의 연속합 (C++) (0) | 2022.06.29 |