카드 식의 최대와 최소
문제
수학 동아리에서 카드를 늘어놓아 식을 만드는 놀이를 한다.
숫자 카드가 N장 있고, 책상 위에 왼쪽부터 오른쪽으로 한 줄로 놓여 있다. 이 순서는 놀이가 끝날 때까지 바꾸지 않는다. 그리고 연산 카드가 N-1장 있는데, 더하기와 빼기와 곱하기와 나누기 네 종류이며 종류마다 몇 장인지가 정해져 있다.
연산 카드는 이웃한 두 숫자 카드 사이에 생기는 N-1개의 빈 자리에 한 장씩 끼워 넣는다. 가진 연산 카드는 한 장도 남기지 않고 모두 써야 한다. 같은 종류의 카드끼리는 서로 구분하지 않으므로, 어느 자리에 어느 종류가 들어가는지만 따지면 된다.
카드를 다 끼우면 하나의 식이 만들어진다. 이 식은 왼쪽부터 차례대로 계산한다. 곱하기와 나누기를 먼저 계산하는 규칙은 쓰지 않는다. 나눌 때는 몫의 소수점 아래를 버린다. 나누어지는 수가 음수인 경우에는 먼저 절댓값으로 나눈 뒤에 그 몫에 음수 부호를 붙인다. 숫자 카드에 적힌 수는 모두 1 이상이라서 0으로 나누는 일은 생기지 않는다.
연산 카드를 끼워 넣는 방법을 모두 따져 보았을 때, 만들 수 있는 식의 값의 최댓값과 최솟값을 계산하는 프로그램을 작성하여라.
예를 들어 N=3이고 숫자 카드가 다음의 표와 같이 놓여 있다고 해보자.
| 자리 | 1 | 2 | 3 |
|---|---|---|---|
| 숫자 카드 | 40 | 99 | 34 |
그리고 연산 카드가 더하기 1장과 빼기 1장이라고 해보자. 끼워 넣는 자리는 두 곳이고 카드도 두 장이므로, 만들 수 있는 식은 다음의 두 가지다.
| 식 | 계산 과정 | 값 |
|---|---|---|
| 40 + 99 - 34 | 40에 99를 더해 139, 139에서 34를 빼서 105 | 105 |
| 40 - 99 + 34 | 40에서 99를 빼서 -59, -59에 34를 더해 -25 | -25 |
따라서 이 예시에서 최댓값은 105이고 최솟값은 -25다. 만들 수 있는 식이 하나뿐이라면 최댓값과 최솟값이 같은 값이 된다.
입출력 예시
예시 1
입력
3 40 99 34 1 1 0 0
출력
105 -25
예시 2
입력
2 91 66 0 0 1 0
출력
6006 6006
예시 3
입력
6 1 2 3 4 5 6 2 1 1 1
출력
54 -24
입력 조건
가장 먼저 숫자 카드의 수 N이 자연수로 주어진다. N은 2 이상 11 이하의 자연수다.
이어서 왼쪽부터 놓여 있는 N장의 숫자 카드에 적힌 수가 한 줄에 공백으로 구분되어 차례대로 주어진다. 각 수는 1 이상 100 이하의 자연수다.
이어서 연산 카드의 장수가 한 줄에 네 개의 수로 공백으로 구분되어 주어진다. 차례대로 더하기 카드, 빼기 카드, 곱하기 카드, 나누기 카드의 장수를 의미한다. 네 수의 합은 항상 N-1이며, 장수가 0인 종류가 있을 수 있다.
출력 조건
첫 줄에 만들 수 있는 식의 값의 최댓값을 출력하고, 다음 줄에 최솟값을 출력한다. 두 줄 모두 하나의 수만 적는다. 값이 음수인 경우에는 음수 부호를 붙여 출력한다.
요구사항
- 숫자 카드의 순서는 바꾸지 않습니다
- 주어진 연산 카드를 한 장도 남기지 않고 모두 끼워 넣습니다
- 식은 왼쪽부터 차례대로 계산하고, 곱하기와 나누기를 먼저 계산하지 않습니다
- 나눌 때는 몫의 소수점 아래를 버리며, 음수는 절댓값으로 나눈 뒤 음수 부호를 붙입니다
- 최댓값을 첫 줄에, 최솟값을 다음 줄에 출력합니다
- 표준 입력으로 읽고 표준 출력으로 내보내는 프로그램을 짜야 합니다
- 쓸 수 있는 말은 파이썬, 자바스크립트입니다
- 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
- 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
- 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
- 출력이 글자 하나까지 기대값과 같아야 합니다. 줄 안의 빈칸은 다른 글자와 똑같이 봅니다.
- 케이스는 16개이고, 그 가운데 3개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
- 케이스 16개를 전부 통과해야 해결입니다.
예시
공개 케이스 3개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 16개를 전부 통과해야 해결입니다.
2 91 66 0 0 1 0
6006 6006
3 40 99 34 1 1 0 0
105 -25
6 1 2 3 4 5 6 2 1 1 1
54 -24
풀이
코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.
제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.
공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.
이 문제를 푼 사람
아직 없습니다. 첫 번째가 되실 수 있습니다.