반응형
안녕하세요? 수구리입니다.
오늘의 마지막 문제인 백준의 1차원 배열입니다!
배열은 흔히 기차라고 생각하면 쉬울 것 같습니다.
C++에서는 C스타일의 배열과 vector라는 컨테이너가 있는데요~
C스타일 배열을 C++에서는 쓸 이유가없죠! 왜냐? 더 다양한 라이브러리가 vector에 있기 때문입니다.
따라서 vector를 사용해서 문제를 풀어보도록 하겠습니다.
[ 문제 ] 1546. 평균
[ 나의 풀이 ]
#include <iostream>
#include <vector>
#include <algorithm>
// vector 범위 정의
#define all(v) v.begin(), v.end()
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
double mean, sum=0;
int exam, s;
vector<double> v;
cin >> exam;
for(int i=0;i<exam;i++){
cin >> s;
v.push_back(s);
}
int M = *max_element(all(v));
for(int i=0;i<exam;i++){
v[i] = v[i]/M*100;
sum += v[i];
}
mean = sum / v.size();
cout << fixed;
cout.precision(6);
cout << mean;
}
[ 설명 ]
ios_base::sync_with_stdio(false);
cin.tie(NULL);
위의 코드를 작성하는 이유는 속도와 관련이 있습니다. 이 내용은 나중에 자세히 더 알아보도록 하겠습니다.
1. double형으로 mean과 sum 변수를 선언해준다.
2. int형으로 exam과 s 변수를 선언해준다.
3. double 값을 갖는 vector 컨테이너 v 를 선언해준다.
4. exam 즉, 과목의 수를 입력받고, 과목의 수만큼 반복문을 돌아준다.
5. 과목의 점수를 과목의 수만큼 입력을 받으면서 vector에 저장.
6. M 이라는 변수는 입력받은 시험점수들의 MAX값을 저장해준다.
7. 이 M값을 가지고 또다시 반복문을 순회하는데, 처음 입력받은 점수들의 값을 수정해주고, sum변수에 총 합을 계산
8. 평균을 계산하기 위해서 sum변수를 v의 size로 나눠준다.
cout << fixed;
cout.precision(6);
9. 위의 코드는 소수점 아래 6자리까지 표현해주겠다는 의미이다.
10. 조작한 평균을 출력해준다.
반응형
'✏️ PS > Boj' 카테고리의 다른 글
[ C++ ] 백준 8958번: OX퀴즈 (0) | 2021.10.14 |
---|---|
[ C++ ] 백준 4344번: 평균은 넘겠지 (0) | 2021.10.11 |
[ C++ ] 백준 3052번: 나머지 (0) | 2021.10.06 |
[ C++ ] 백준 2577번: 숫자의 개수 (0) | 2021.10.06 |
[ C++ ] 백준 2562: 최댓값 (0) | 2021.10.05 |