[v.λ°±νΈλνΉ-μ°μ°μ λΌμλ£κΈ°-14888]BAEKJOON_Python
220127 μμ±
<λ³Έ λΈλ‘κ·Έλ BAEKJOON μ μ°Έκ³ ν΄μ μ λ§μ νμ΄λ₯Ό μμ±νμμ΅λλ€>
14888
Nκ°μ μμ N-1κ°μ μ°μ°μκ° μ£Όμ΄μ‘μ λ, λ§λ€ μ μλ μμ κ²°κ³Όκ° μ΅λμΈ κ²κ³Ό μ΅μμΈ κ²μ ꡬνλ νλ‘κ·Έλ¨
첫째 μ€μ μμ κ°μ N(2 ≤ N ≤ 11)κ° μ£Όμ΄μ§
λμ§Έ μ€μλ A1, A2, ..., ANμ΄ μ£Όμ΄μ§ (1 ≤ Ai ≤ 100)
μ μ§Έ μ€μλ ν©μ΄ N-1μΈ 4κ°μ μ μκ° μ£Όμ΄μ§λλ°, μ°¨λ‘λλ‘ λ§μ (+), λΊμ (-), κ³±μ (×), λλμ (÷)μ κ°μ
λ΄ νμ΄
from itertools import permutations
import sys
n = int(sys.stdin.readline())
num = list(map(int, input().split()))
op_num = list(map(int, input().split()))
op = ["+", "-", "*", "/"]
oper = []
for i in range(len(op_num)) :
for j in range(op_num[i]) :
oper.append(op[i])
max = -1e9
min = 1e9
def solve() :
global max, min
for case in permutations(oper, n-1) :
total = num[0]
for i in range(1, n) :
if case[i - 1] == "+" :
total += num[i]
elif case[i - 1] == "-" :
total -= num[i]
elif case[i - 1] == "*" :
total *= num[i]
elif case[i - 1] == "/" :
total = int(total/num[i])
if total > max :
max = total
if total < min :
min = total
solve()
print(max)
print(min)
2
5 6
0 0 1 0
// κ²°κ³Ό
30
30
μ°Έκ³ νμ©λλμ° γ ‘γ γ ‘γ
[BOJ 14888] μ°μ°μ λΌμλ£κΈ° (Python)
λ§ν¬μ λ¬Έμ λ₯Ό λ³΄κ³ 2κ°μ§ νμ΄ λ°©λ²μ΄ λ μ¬λλ€. νλλ μ°μ°μλ€μ λν μμ΄μ ꡬνμ¬ νΈλ λ°©λ²μ΄λ€. λ€λ₯Έ νλλ DFSλ₯Ό μ΄μ©ν΄ μ΅λ, μ΅μκ°μ ꡬνλ λ°©λ²μ΄λ€. μμ΄μ νμ΄μ¬ permutations λͺ¨
velog.io