최저 수위와 최고 수위
문제
한 해양 관측소는 바다에 떠 있는 부표로 수면의 높이를 기록한다. 기록은 기준선을 0으로 두고 밀리미터 단위로 적는다. 수면이 기준선보다 높으면 그 차이만큼 양수로 적고, 기준선보다 낮으면 그 차이만큼 음수로 적는다. 수면이 기준선과 같은 높이라면 0으로 적는다.
관측소는 지난 조사 기간에 수면의 높이를 N번 기록했다. 기록은 측정한 순서대로 1번부터 N번까지 번호를 붙여 보관한다. 조사 보고서의 맨 앞에는 N번의 기록 가운데 가장 낮은 값과 가장 높은 값을 나란히 적어야 한다. 이 두 값이 조사 기간에 수면이 오르내린 폭을 한눈에 보여 주기 때문이다.
N번의 기록이 주어졌을 때, 가장 낮은 값과 가장 높은 값을 차례대로 출력하는 프로그램을 작성하여라.
예를 들어 N=5번의 기록이 다음의 표와 같다고 해보자. 1번과 5번 기록은 수면이 기준선보다 낮았던 때이고, 나머지 세 기록은 기준선보다 높았던 때다.
| 기록 번호 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 수면 높이 | -290790 | 96108 | 279372 | 296405 | -940679 |
1번 기록부터 차례대로 훑으면서 지금까지 본 가운데 가장 낮은 값과 가장 높은 값을 갈아 치우는 식으로 따라가 보면 다음과 같다.
| 지금 보는 기록 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 지금까지 가장 낮은 값 | -290790 | -290790 | -290790 | -290790 | -940679 |
| 지금까지 가장 높은 값 | -290790 | 96108 | 279372 | 296405 | 296405 |
5번 기록까지 모두 훑고 나면 가장 낮은 값은 5번 기록의 -940679이고, 가장 높은 값은 4번 기록의 296405다.
| 항목 | 기록 번호 | 값 |
|---|---|---|
| 가장 낮은 값 | 5 | -940679 |
| 가장 높은 값 | 4 | 296405 |
따라서 보고서의 맨 앞에는 -940679와 296405를 차례대로 적는다. 한편 N=1인 경우에는 기록이 하나뿐이므로 가장 낮은 값과 가장 높은 값이 같은 값이 된다.
입출력 예시
예시 1
입력
5 -290790 96108 279372 296405 -940679
출력
-940679 296405
예시 2
입력
1 -685155
출력
-685155 -685155
예시 3
입력
3 855384 239726 901628
출력
239726 901628
입력 조건
가장 먼저 기록의 수 N이 첫째 줄에 주어진다. N은 1 이상 100,000 이하의 자연수다.
이어서 둘째 줄에 N번의 기록이 측정한 순서대로 공백을 두고 주어진다. 각 기록은 -1,000,000 이상 1,000,000 이하의 정수다. 기록에는 음수와 0이 섞여 있을 수 있으며, 같은 값이 여러 번 나올 수도 있다.
출력 조건
가장 낮은 값과 가장 높은 값을 한 줄에 출력한다. 가장 낮은 값을 먼저 적고, 공백을 하나 둔 다음에 가장 높은 값을 적는다. 줄의 끝에는 공백을 남기지 않고 줄을 바꾼다.
요구사항
- 입력은 표준 입력으로 받고 답은 표준 출력으로 내보냅니다
- 읽어야 하는 수는 첫째 줄의 N과 둘째 줄의 N개 기록입니다
- 기록에는 음수가 섞여 있습니다. 처음 값을 0으로 두고 견주면 틀린 답이 나옵니다
- 출력은 한 줄이고, 두 값 사이의 구분은 공백 하나입니다
- 채점은 출력을 기대값과 글자 하나까지 견줍니다
- 표준 입력으로 읽고 표준 출력으로 내보내는 프로그램을 짜야 합니다
- 쓸 수 있는 말은 파이썬, 자바스크립트입니다
- 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
- 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
- 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
- 케이스는 15개이고, 그 가운데 3개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
- 케이스 15개를 전부 통과해야 해결입니다.
예시
공개 케이스 3개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 15개를 전부 통과해야 해결입니다.
1 -685155
-685155 -685155
3 855384 239726 901628
239726 901628
5 -290790 96108 279372 296405 -940679
-940679 296405
풀이
코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.
제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.
공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.
이 문제를 푼 사람
시간은 푸는 데 걸린 시간입니다. 입력을 읽는 시간은 푸는 분이 어쩔 수 없는 값이라 빼고 셉니다. 그리고 이 값은 각자 기기가 적어 보내는 값이라, 어느 기기에서 쟀는지 같이 적어 둡니다.
이 분이 코드를 비공개로 두셨습니다.