์ ๋ ฅ๋ฐ์ ์ฐ์ฐ์ ๊ฐ์๋ฅผ ์ด๋ป๊ฒ ๋ฐฐ์นํ๋๋๊ฐ ๊ด๊ฑด..
์ผ๋จ ์์ด์ ๋ชจ๋ ๊ตฌํ ๋ค์์ ์งํฉ์ผ๋ก ๋ณ๊ฒฝํด ์ค๋ณต์ ๋ ๋ ค๋ฒ๋ฆฌ๊ธฐ๋ก ํ๋ค
์ฒ์์๋ ์ซ์ + ์ฐ์ฐ์ + ์ซ์ ํด์ ์ญ str๋ก ๋ง๋ค์ด eval ํจ์๋ก ๊ณ์ฐํ๋๋ฐ
์์ // ์์ ํ๋ฉด ๊ฐ์ด ๋ฌ๋ผ์ง๋๊ฒ... ๊ทธ๋์ ์ด์ฉ์ ์์ด ํ๋ํ๋ ๊ณ์ฐํ๋ค
์ฐ์ฐ์์ ์ซ์ ๋ฆฌ์คํธ๋ฅผ ์ ๋ฌํ๋ฉด ๊ณ์ฐํด์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ ํจ์ expr
1. num์ ์ธ๋ฑ์ค idx = 0
2. ๊ณ์ฐํ ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํ total ์ ์ฒซ๋ฒ์งธ ์ซ์๋ก ์ด๊ธฐํ
3. ์ฐ์ฐ์ ๋ฆฌ์คํธ ope์์ ํ๋์ฉ ๊ฐ์ ธ์จ๋ค
3-1. ์ฐ์ฐ์๊ฐ +, -, * ์ผ ๋๋ ๊ทธ๋๋ก ๊ณ์ฐ
3-2. ์ฐ์ฐ์๊ฐ / ์ผ ๋๋ ์ฒซ๋ฒ์งธ ํผ์ฐ์ฐ์ = total ์ด ์์์ธ์ง ํ์ธํด์ ๋ฐ๋ก ๊ณ์ฐํด์ค๋ค (์์๋ก ๋ฐ๊พผ ๋ค ๋ชซ์ ์ทจํ๊ณ , ๊ทธ ๋ชซ์ ์์๋ก ๋ฐ๊พผ ๊ฒ)
4. ๊ฒฐ๊ณผ๊ฐ ๋ฐํ
1. ์ซ์์ ์ฐ์ฐ์ ๊ฐ์๋ฅผ ๊ฐ๊ฐ nums, op1 ๋ฆฌ์คํธ์ ์ ์ฅํ๋ค
2. ์ฐ์ฐ์ ๊ฐ์์ ๊ฐ๊ฐ +, -, *, / ๋ฅผ ๊ณฑํด ํ๋์ ๋ฌธ์์ด op2๋ก ๋ง๋ ๋ค
3. itertools ๋ชจ๋์ permutation() ํจ์๋ฅผ ์ฌ์ฉํด op2๋ฅผ ์ฌ์ฉํด ์์ด ์กฐํฉ์ ์์ฑํด ์งํฉ operator์ผ๋ก ์ ์ฅํ๋ค ( ์ค๋ณต ์ ๊ฑฐ )
4. ์งํฉ operator์ ๋ฆฌ์คํธ๋ก ๋ณ๊ฒฝํ๋ค
5. operator์ ์์๋ฅผ ๊ฐ๊ฐ ๊ณ์ฐํ์ฌ ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํ๋ ๋ฆฌ์คํธ result์ ์ถ๊ฐ
6. result์ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ ์ถ๋ ฅ
# 14888.py
import itertools
def expr(ope, num):
idx = 0
total = num[idx]
for i in ope:
if i == '+':
total = total + num[idx+1]
elif i == '-':
total = total - num[idx+1]
elif i == '*':
total = total * num[idx+1]
elif i == '/':
if total < 0:
total = (abs(total) // num[idx+1]) * -1
else:
total = total // num[idx+1]
idx += 1
return total
n = int(input())
nums = list(map(int, input().split()))
op1 = list(map(int, input().split()))
op2 = '+' * op1[0] + '-' * op1[1] + '*' * op1[2] + '/' * op1[3]
operator = set(itertools.permutations(op2, n - 1))
operator = list(operator)
operator.sort()
result = []
for i in operator:
result.append(expr(i, nums))
print(max(result))
print(min(result))