본문 바로가기
Develop/백준 (Cpp)

[백준] 10984번: 내 학점을 구해줘 (C++)

by Tarra 2023. 1. 19.

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