Do it C++의 문제들을 기반으로 문제를 풀이해나갈텐데 생각하는 풀이 방법은 다음과 같다.
1) 교재 개념 부분만 읽기
2) 해당 문제 번호 백준에서 찾아서 풀이(모르는 C++ 문법은 서칭해가면서)
3) 풀이 이후에 교재의 풀이 및 코드보고 비교하기
4) 블로그에 새로알게 된 C++ 문법 등 학습한 내용 정리
https://www.acmicpc.net/problem/1546
먼저 내가 문법을 찾아가면서 푼 풀이는 다음과 같다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> vec(N);
for (int i = 0; i < N; i++) {
cin >> vec[i];
}
int M = *max_element(vec.begin(), vec.end());
float before_avg = (accumulate(vec.begin(), vec.end(), 0) / (float)N);
cout << before_avg * 100 / M;
}
책에서의 풀이는 다음과 같다.
#include <iostream>
using namespace std;
int main() {
int N = 0;
int A[1000];
cin >> N;
for (int i = 0; i < N; i++) {
cin >> A[i];
}
long sum = 0;
long max = 0;
for (int i = 0; i < N; i++) {
if (A[i] > max) max = A[i];
sum += A[i];
}
double result = sum * 100.0 / max / N;
cout << result << "\n";
}