관리 메뉴

Bull

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

Algorithm/Baekjoon

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

Bull_ 2024. 1. 25. 05:57

https://www.acmicpc.net/problem/10984

 

10984번: 내 학점을 구해줘

게으른 근우는 열심히 놀다가 문득, 자신의 학점 평균이 얼마일지 궁금해졌다. 학사시스템도 들어가기 귀찮아하는 근우를 위해 구해주도록 하자. 

www.acmicpc.net

 

 

요구사항

① T개의 학기 수를 입력

② 받을 과목 수 N을 입력
③ N개의 과목에 대한 학점 수와 점수를 입력한다.

 

 

 

코드

#include <iostream>
#include <vector>

using namespace std;

void func(int K) {
    int a;
    float b;
    int sum_a = 0;
    float sum_b = 0;

    for (int i = 0; i < K; i++) {
        cin >> a >> b;

        sum_a += a;
        sum_b += a * b;
    }
    cout << sum_a << " ";

    cout << fixed;
    cout.precision(1);
    cout << float(sum_b / sum_a) << endl;
}

int main() {
    int N, K;

    cin >> N;
    for(int i =0; i<N; i++){
        cin >> K;
        func(K);
    }

    return 0;
}

 

 

1. 함수화

 

단순히 같은 매커니즘으로 출력을 요하기 때문에 학점 수 합산과 GPA에 대한 출력은 다음과 같이 함수로 만들어준다.

void func(int K) {
    int a;
    float b;
    int sum_a = 0;
    float sum_b = 0;

    for (int i = 0; i < K; i++) {
        cin >> a >> b;

        sum_a += a;
        sum_b += a * b;
    }
    cout << sum_a << " ";

    cout << fixed;
    cout.precision(1);
    cout << float(sum_b / sum_a) << endl;
}

 

 

 

 

 

2. 소수점 표현
    cout << fixed;
    cout.precision(1);

 

 

GPA는 소수점 아래 1자리까지 출력이고 0은 0.0으로 출력되어야 한다. 

 


fixed와 precision은 항상 같이 사용되어야 하는 것은 아니지만, 종종 함께 사용된다.

 

 


std::fixed

std::fixed는 std::cout을 통해 실수를 출력할 때, 항상 소수점 형식으로 출력하도록 지정한다.


기본적으로, 실수는 필요에 따라 고정 소수점 형식 또는 지수 형식으로 출력될 수 있다. std::fixed를 사용하면, 출력이 항상 고정 소수점 형식(fixed-point notation)으로 제한된다.


예를 들어, std::cout << std::fixed << 123.456;는 123.456을 출력한다.



std::cout.precision()

std::setprecision(int n)는 소수점 이하 n자리까지의 정밀도로 실수를 출력하도록 지정한다.


std::fixed와 함께 사용되지 않는 경우, std::setprecision은 전체 출력에 대한 유효 숫자를 지정한다.

 

이는 고정 소수점과 지수 형식 모두에 적용될 수 있다.


std::fixed와 함께 사용될 때, std::setprecision은 소수점 이하 몇 자리까지 출력할지를 정확히 지정한다. 

 

예를 들어, std::cout << std::fixed << std::cout.precision(2) << 123.456;는 123.46을 출력한다.

 

여기서 소수점 아래자리는 반올림되어 출력한다.

 


이를 함께 사용하는 이유는 다음과 같다.


std::fixed와 cout.precision()을 함께 사용하면, 출력 형식을 고정 소수점으로 제한하고, 동시에 소수점 이하의 정확한 자릿수를 지정할 수 있어 출력 형식을 더 세밀하게 제어할 수 있다.


따라서, fixed와 precision은 서로 다른 기능을 가지고 있지만, 실수를 정밀하게 제어된 형식으로 출력하고자 할 때 함께 사용되는 것이 좋다.

'Algorithm > Baekjoon' 카테고리의 다른 글

[백준] 1408: 24 (C++)  (1) 2024.01.28
[백준] 5565: 영수증 (C++)  (0) 2024.01.26
[백준] 2822: 점수 계산 (C++)  (1) 2024.01.23
백준 12851 C언어  (1) 2022.10.08
백준 12865 문제 풀이 (Python)  (0) 2022.07.18