[BOJ] 1546번 평균 (C++) [Do it!]

천호영·2024년 1월 16일
0

알고리즘

목록 보기
91/100
post-thumbnail

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";

}
profile
성장!

0개의 댓글