본문 바로가기

프로그래밍_백준/C++

(C++) 백준 1546번 평균 [new(), delete()]

728x90
반응형

 

백준 1546번은 최댓값을 찾고 최댓값을 기준으로 새로 평균을 구하는 문제입니다!

먼저 과목 수를 입력 받고 getline()으로 공백을 포함하여 값을 받습니다.

max_index로 최댓값의 인덱스를 찾고 그 값을 기준으로 평균을 새로 구합니다!   

 

#include<iostream>
#include<string>
#include<sstream>
using namespace std;

int main()
{
	int n, a, max_index = 0, i = 0;
	double result=0;//소수까지 표현하기 위해 자료형을 double로 했습니다.

	string str;
	stringstream stream;

	cin >> n;
	int *b = new int[n];//포인터를 배열처럼 사용합니다!
	cin.ignore();
	getline(cin, str);

	stream.str(str);

	while (stream >> a) {
		b[i] = a;
		i++;
	}//배열에 입력된 값을 넣습니다
	
	for (int j = 1; j < n; j++) {
		max_index = (b[max_index] > b[j]) ? max_index : j; //최댓값
	}

	for (int j = 0; j < n; j++) {
		result += (((double)b[j] / (double)b[max_index])) * 100;
	}//평균 구하기
    
	cout << result / n;
	delete[] b;//배열 해제
}
728x90
반응형