[코딩테스트] 백준 #1546 문제 풀이

재오·2022년 9월 20일
1

코딩테스트

목록 보기
2/46
post-thumbnail

문제는 다음과 같다.

여기서 가장 중요한 포인트는 입력값을 받는데, 이 입력값의 개수는 정해져 있지 않다. 또한 입력받은 값 중에서 최대값을 걸러서 저장할 수 있어야 하는 것이다.

먼저 입력값을 개수 제한없이 받는 것은 for 문과 동적 배열을 활용한다

for 문을 통해 배열에 값을 할당하면 그 즉시 미리 선언해 둔 변수 max = 0과 크기를 비교하여 max의 값을 반복문이 한 번 돌 때마다 최신화 시켜준다.

그리고 result 변수에 입력 받은 값을 누적으로 더해나간다.

그 result 값을 최종으로 결정된 max 로 나누고 100을 곱하면 우리가 원하는 값을 얻는다. 그리고 number 로 나누면 평균을 쉽게 구할 수 있다.

이번 문제에서 얻을 만한 내용은 입력값을 여러개 받을 때 for문과 배열의 조합이다.

꿀팁은 문제를 직접 손으로 써나가면서 식을 더 간결하게 할 방안도 찾는 것이 도움이 될 것이다.

최종 코드

#include <iostream>

using namespace std;

int main()
{
    int number;
    int score[1000] = {};
    int max = 0;
    double result = 0;
    
    cin >> number;
    
    for(int i = 0; i < number; i++)
    {
        cin >> score[i];
        if(score[i] > max)
        {
            max = score[i];
        }
        result += score[i];
    }
    result = (result / max * 100) / number;
    cout << fixed;
    cout.precision(6);
    cout << result << endl;
}
profile
블로그 이전했습니다

0개의 댓글