지점 판매 지수의 평균
문제
한 프랜차이즈 본사는 N개 지점의 지난 달 판매량을 모았다. 지점마다 규모가 달라서 판매량을 그대로 견주기는 어렵다. 그래서 본사는 판매량을 지수로 바꾸어 쓴다.
지수를 만드는 방법은 다음과 같다. 먼저 N개 지점의 판매량 가운데 가장 많은 값을 M이라고 하자. 어떤 지점의 판매량이 S일 때, 그 지점의 지수는 S를 M으로 나눈 다음 100을 곱한 값이다. 이렇게 하면 판매량이 가장 많은 지점의 지수는 언제나 100이 되고, 다른 지점의 지수는 100보다 작은 값이 된다. 판매량이 0인 지점의 지수는 0이다. 지수는 나누기를 거치므로 대개 소수가 된다. 지수를 쓰면 지점의 규모와 상관없이 가장 잘 팔린 지점을 100으로 두고 다른 지점이 그에 얼마나 가까운지 견줄 수 있다.
본사는 이렇게 바꾼 N개 지수의 평균을 보고서에 적으려고 한다. 평균은 N개의 지수를 모두 더해 N으로 나눈 값이다. 지수를 더할 때는 1번 지점부터 N번 지점까지 번호 순서대로 더한다. 지수가 소수라서 더하는 순서가 달라지면 아주 작은 자리가 어긋날 수 있기 때문이다.
N개 지점의 판매량이 주어졌을 때, 환산한 지수들의 평균을 출력하는 프로그램을 작성하여라.
예를 들어 N=3개 지점의 판매량이 차례대로 72, 84, 51이라고 해보자. 가장 많은 값이 84이므로 M은 84다. 각 지점의 지수를 구하면 다음의 표와 같다. 표에서는 자리가 길어지는 값을 소수점 아래 넷째 자리까지만 적었다.
| 지점 번호 | 1 | 2 | 3 |
|---|---|---|---|
| 판매량 | 72 | 84 | 51 |
| 지수 | 85.7143 | 100 | 60.7143 |
2번 지점이 판매량이 가장 많은 지점이라서 지수가 100이 되었다. 1번 지점의 지수는 72를 84로 나눈 뒤 100을 곱한 값이고, 3번 지점의 지수는 51을 84로 나눈 뒤 100을 곱한 값이다. 세 지수를 모두 더하면 246.4286쯤 되고, 이를 3으로 나눈 평균은 82.1428쯤 되는 값이다. 이 값은 자리를 맞추거나 반올림하지 않고 계산한 그대로 적는 것이 답이다.
한편 지점이 하나뿐이라면 그 지점이 곧 판매량이 가장 많은 지점이므로 지수는 100이고, 평균도 100이 된다. 모든 지점의 판매량이 같은 경우에도 지수가 모두 100이 되어 평균은 100이다.
입출력 예시
예시 1
입력
3 72 84 51
출력
82.14285714285715
예시 2
입력
1 100
출력
100
예시 3
입력
2 69 86
출력
90.11627906976744
입력 조건
가장 먼저 지점의 수 N이 첫째 줄에 주어진다. N은 1 이상 1,000 이하의 자연수다.
이어서 둘째 줄에 N개 지점의 판매량이 지점 번호 순서대로 공백을 두고 주어진다. 각 판매량은 0 이상 100 이하의 정수다. 또한 N개의 판매량 가운데 적어도 하나는 0보다 크다. 따라서 환산의 기준이 되는 M은 언제나 0보다 크고, 0으로 나누는 일은 생기지 않는다.
출력 조건
환산한 지수들의 평균을 한 줄에 출력한다. 자리를 맞추거나 반올림하지 않고 계산한 값을 그대로 적는다. 평균이 100이면 100으로 적고, 소수 부분이 남으면 그 자리를 자르지 않고 그대로 적는다. 예를 들어 지점이 두 곳이고 판매량이 69와 86이라면 90.11627906976744를 적는다.
요구사항
- 입력은 표준 입력으로 받고 답은 표준 출력으로 내보냅니다
- 환산의 기준 M은 판매량의 최댓값입니다. 합이나 평균이 아닙니다
- 환산은 각 판매량마다 따로 하고, 그 다음에 환산한 값들의 평균을 구합니다
- 지수는 1번 지점부터 번호 순서대로 더합니다. 순서를 바꾸거나 오차를 보정하며 더하면 마지막 자리가 어긋날 수 있습니다
- 값을 반올림하거나 소수점 자리를 맞추면 틀린 답이 됩니다. 실수 계산 결과를 그대로 내보내야 합니다
- 채점은 출력을 기대값과 글자 하나까지 견줍니다
- 표준 입력으로 읽고 표준 출력으로 내보내는 프로그램을 짜야 합니다
- 쓸 수 있는 말은 파이썬, 자바스크립트입니다
- 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
- 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
- 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
- 케이스는 15개이고, 그 가운데 3개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
- 케이스 15개를 전부 통과해야 해결입니다.
예시
공개 케이스 3개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 15개를 전부 통과해야 해결입니다.
1 100
100
2 69 86
90.11627906976744
3 72 84 51
82.14285714285715
풀이
코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.
제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.
공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.
이 문제를 푼 사람
아직 없습니다. 첫 번째가 되실 수 있습니다.