BOJ | 1546번

송치헌·2021년 6월 16일
0
post-thumbnail
post-custom-banner

Python 풀이

N = int(input()) #과목 개수 입력
scr = list(map(int,input().split())) #점수 입력
print((sum(scr)*100/max(scr))/N) 
#점수의 합을 최고 점수로 나누고 100을 곱한 것을 과목의 갯수로 나눔
  • NN (과목 개수)

  • Ak=A1,A2,...,Am,...,AnA_k = A_1, A_2, ... , A_m , ... , A_n
    (각 과목의 점수[AmA_m은 과목 최고 점수])

  • Bk=(A1/Am)100,(A2/Am)100,...,(An/Am)100B_k = (A_1/A_m)*100, (A_2/A_m)*100, ..., (A_n/A_m)*100
    (최고 점수를 기준으로 하는 새로운 점수)

  • Answer=Bk/N=((Ak)100/Am)/NAnswer = ∑B_k/N = ((∑A_k)*100/A_m)/N
    (BkB_k에서 100/Am100/A_m은 공통이므로 묶어준다)

  • 코드에서 Ak∑A_ksum(scr)이고 AmA_mmax(scr)이다.
    따라서 ((Ak)100/Am)/N((∑A_k)*100/A_m)/N(sum(scr)*100/max(scr))/N을 해주면 정답

    C++ 풀이

#include <iostream>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int N;
    int max = 0, sum = 0;
    int arr[1001] = { 0, };
    cin >> N;
    for(int i=0;i<N;i++) {
    	int a;
    	cin >> a;
    	if (max < a) max = a;
    	arr[i] = a;
    }
    for (int i = 0; i < N; i++) {
    	sum += arr[i];
    }
    cout << (sum * 100 / max)/(float)N;
}
profile
https://oraange.tistory.com/ 여기에도 많이 놀러와 주세요
post-custom-banner

0개의 댓글