✏️ PS/Boj

[ C++ ] 백준 1546번: 평균

반응형

 

안녕하세요? 수구리입니다.

 

오늘의 마지막 문제인 백준의 1차원 배열입니다!

 

배열은 흔히 기차라고 생각하면 쉬울 것 같습니다.

 

C++에서는 C스타일의 배열과 vector라는 컨테이너가 있는데요~

 

C스타일 배열을 C++에서는 쓸 이유가없죠! 왜냐? 더 다양한 라이브러리가 vector에 있기 때문입니다.

 

따라서 vector를 사용해서 문제를 풀어보도록 하겠습니다.

 

 

[ 문제 ] 1546. 평균

 

1546번: 평균

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보

www.acmicpc.net

 

 

[ 나의 풀이 ]


#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