성장 배율
문제
한 온실에서는 묘목 한 그루의 무게를 날마다 적어 둔다. 하루가 지나면 묘목의 무게는 그 날 적어 둔 성장 배율만큼 곱해진다. 어떤 날의 성장 배율이 1.200이라면 그 날 하루 동안 무게가 1.2배가 된 것이고, 배율이 1.000보다 작은 날에는 무게가 오히려 줄어든 것이다.
온실 관리자는 N일 동안의 성장 배율 기록을 가지고 있다. 관리자는 이 기록 가운데 연속한 구간을 하나 골라서, 그 구간에 속한 모든 날의 성장 배율을 곱한 값을 보고서에 적으려고 한다. 구간의 길이는 하루여도 되고, N일 전체여도 된다. 관리자는 보고서에 가장 큰 값을 적고 싶다.
N일 동안의 성장 배율이 1일부터 N일까지 차례대로 주어졌을 때, 연속한 구간 하나를 골라 그 구간의 성장 배율을 모두 곱했을 때 나올 수 있는 가장 큰 값을 계산하는 프로그램을 작성하여라.
예를 들어 N=8일 동안의 성장 배율이 다음의 표와 같다고 해보자.
| 날짜 | 1일 | 2일 | 3일 | 4일 | 5일 | 6일 | 7일 | 8일 |
|---|---|---|---|---|---|---|---|---|
| 성장 배율 | 1.476 | 0.742 | 0.995 | 1.491 | 1.852 | 0.736 | 0.523 | 1.016 |
각 날짜에 대하여, 그 날로 끝나는 연속한 구간 가운데 곱이 가장 큰 경우를 찾아 정리하면 다음의 표와 같다.
| 끝나는 날 | 1일 | 2일 | 3일 | 4일 | 5일 | 6일 | 7일 | 8일 |
|---|---|---|---|---|---|---|---|---|
| 가장 큰 곱 | 1.476 | 1.095 | 1.090 | 1.625 | 3.009 | 2.215 | 1.158 | 1.177 |
표에서 가장 큰 값은 5일로 끝나는 구간의 3.009다. 이 값은 1일부터 5일까지의 배율을 모두 곱한 결과이며, 1.476 × 0.742 × 0.995 × 1.491 × 1.852를 계산한 값이다. 따라서 현재 예시에서의 정답은 3.009다.
배율이 1.000보다 작은 날을 구간에 넣으면 곱이 줄어들기 때문에, 구간을 길게 잡는 것이 늘 유리하지는 않다. 예를 들어 1일부터 8일까지를 전부 고르면 곱이 1.177에 그친다. 반대로 배율이 1.000보다 큰 날만 모아서 고를 수도 없다. 구간은 날짜가 이어져 있어야 하므로 중간에 있는 날을 건너뛸 수 없다.
배율이 0.000인 날이 있을 수도 있다. 그런 날을 구간에 넣으면 곱이 0.000이 되므로, 그 날을 넘어가는 구간은 답이 될 수 없다. N이 1인 경우에는 고를 수 있는 구간이 1일 하나뿐이므로 그 날의 배율이 그대로 답이 된다.
입출력 예시
예시 1
입력
8 1.476 0.742 0.995 1.491 1.852 0.736 0.523 1.016
출력
3.009
예시 2
입력
5 1.1 0.5 3.2 0.1 4.0
출력
4.000
예시 3
입력
1 0.943
출력
0.943
입력 조건
가장 먼저 첫째 줄에 기록한 날의 수 N이 주어진다. N은 1 이상 10,000 이하의 자연수다.
이어서 N개의 줄에 걸쳐 1일부터 N일까지의 성장 배율이 한 줄에 하나씩 차례대로 주어진다. 각 성장 배율은 0 이상 4 이하의 실수이며, 소수점 아래 셋째 자리까지 주어진다. 소수점 아래 자리가 세 자리보다 적게 적혀 있을 수도 있다. 예를 들어 3.2나 4.0처럼 한 자리만 적혀 있는 경우도 있다.
출력 조건
연속한 구간 하나를 골라 그 구간의 성장 배율을 모두 곱했을 때 나올 수 있는 가장 큰 값을 한 줄에 출력한다. 이때 소수점 아래 넷째 자리에서 반올림하여 소수점 아래 셋째 자리까지 출력한다. 소수점 아래 자리가 0이더라도 생략하지 않고 세 자리를 모두 적는다. 예를 들어 답이 4라면 4.000으로 출력한다.
요구사항
- 구간의 길이는 1 이상입니다. 하루만 고르는 것도 구간으로 인정합니다
- 고르는 구간은 날짜가 연속해야 합니다. 중간을 건너뛸 수 없습니다
- 답은 반드시 소수점 아래 셋째 자리까지 적습니다. 넷째 자리에서 반올림합니다
- 표준 입력으로 읽고 표준 출력으로 내보내는 프로그램을 짜야 합니다
- 쓸 수 있는 말은 파이썬, 자바스크립트입니다
- 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
- 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
- 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
- 출력이 글자 하나까지 기대값과 같아야 합니다. 줄 안의 빈칸은 다른 글자와 똑같이 봅니다.
- 케이스는 15개이고, 그 가운데 3개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
- 케이스 15개를 전부 통과해야 해결입니다.
예시
공개 케이스 3개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 15개를 전부 통과해야 해결입니다.
1 0.943
0.943
8 1.476 0.742 0.995 1.491 1.852 0.736 0.523 1.016
3.009
5 1.1 0.5 3.2 0.1 4.0
4.000
풀이
코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.
제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.
공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.
이 문제를 푼 사람
아직 없습니다. 첫 번째가 되실 수 있습니다.