일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kaggle
- Image Processing
- system hacking
- Dreamhack
- rao
- DART
- 백준
- study book
- Computer Architecture
- llm을 활용 단어장 앱 개발일지
- fastapi를 사용한 파이썬 웹 개발
- Flutter
- C++
- BFS
- Got
- BOF
- Stream
- ML
- BAEKJOON
- FastAPI
- 영상처리
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- PCA
- MATLAB
- MDP
- Algorithm
- ARM
- pytorch
- bloc
- Widget
- Today
- Total
Bull
[백준] 10984: 내 학점을 구해줘 (C++) 본문
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 |