-
[λ°±μ€] 14888 μ°μ°μ λΌμλ£κΈ° with PythonPS 2022. 1. 24. 20:44728x90λ°μν
π BOJ 14888 μ°μ°μ λΌμλ£κΈ°
π‘ 쑰건
Nκ°μ μλ‘ μ΄λ£¨μ΄μ§ μμ΄ A1, A2, ..., AN
μμ μ μ¬μ΄μ λΌμλ£μ μ μλ N-1κ°μ μ°μ°μ
μ°μ°μλ λ§μ (+), λΊμ (-), κ³±μ (Γ), λλμ (Γ·)μΌλ‘λ§ μ΄λ£¨μ΄μ Έ μλ€.μμ κ°μ N(2 β€ N β€ 11)
A1, A2, ..., ANμ΄ μ£Όμ΄μ§λ€. (1 β€ Ai β€ 100)첫째 μ€μ λ§λ€ μ μλ μμ κ²°κ³Όμ μ΅λκ°μ, λμ§Έ μ€μλ μ΅μκ°μ μΆλ ₯
μμ΄, λΈλ£¨νΈν¬μ€ μκ³ λ¦¬μ¦ μ νμ λ¬Έμ
π₯ μμ€ μ½λ
from sys import stdin from itertools import permutations n = int(stdin.readline().rstrip()) num = list(map(int, stdin.readline().split())) cal_ = list(map(int, stdin.readline().split())) gi = ['+', '-', '*', '/'] cg = [] vmax = -1e9 vmin = 1e9 def calculation(sign, num): global vmax, vmin calc_num = num[0] for idx in range(1, len(num)): if sign[idx - 1] == '+': calc_num += num[idx] elif sign[idx - 1] == '-': calc_num -= num[idx] elif sign[idx - 1] == '*': calc_num *= num[idx] elif sign[idx - 1] == '/': if num[idx] < 0 or calc_num < 0: calc_num = abs(calc_num) // abs(num[idx]) * -1 else: calc_num //= num[idx] vmax = max(vmax, calc_num) vmin = min(vmin, calc_num) for i in range(4): cg.extend([gi[i]] * cal_[i]) for sign in list(set(permutations(cg, n - 1))): calculation(sign, num) print(vmax) print(vmin)
π μμ λ° μ€νκ²°κ³Ό
μμ
2 5 6 0 0 1 0
μ€νκ²°κ³Ό
30 30
β¨οΈ λ¬Έμ νμ΄
permutations λΌμ΄λΈλ¬λ¦¬ import
μ°μ°μλ₯Ό λ§μ (+), λΊμ (-), κ³±μ (Γ), λλμ (Γ·) μμλλ‘ λ΄μ gi 리μ€νΈ μ μΈ.
μ°μ°μμ κ°μ 리μ€νΈλ₯Ό μ λ ₯λ°μ κ° μ°μ°μμ κ°μλ§νΌ κ³±νμ¬ cg 리μ€νΈμ extend ν΄μ€λ€.
cg 리μ€νΈμ κΈΈμ΄λ μ λ ₯λ°μ μμ΄μ κΈΈμ΄ - 1μ΄λ€.
permutaions ν¨μλ₯Ό ν΅ν΄ μμ΄μ ν΅ν΄ μ°μ°μμ κ²½μ°λ₯Ό λ½μ calculation ν¨μμ λ£κ³ κ³μ°νλ€.calculation ν¨μμμ zero division μλ¬λ₯Ό μ‘°μ¬ν΄μΌνλ€.
calculation ν¨μμμ κ³μ°ν κ²°κ³Όκ°μΌλ‘ μ΅μκ°κ³Ό μ΅λκ°μ κ°±μ ν΄μ€λ€.
πΎ λλμ
- permutations ν¨μλ₯Ό μ¬μ©νμ¬ κ°λ¨νκ² ν μ μμ΄ λ§€μ° μ°©ν λ¬Έμ μλ€κ³ μκ°ν©λλ€.
- μκ°μ΄κ³Όκ° μλκ² νκΈ° μν΄μ permutations ν¨μ κ²°κ³Όλ₯Ό set() μΌλ‘ λλ¬μΈμ μ€λ³΅μ μ κ±°νμ΅λλ€.
λ°μν'PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 20291 νμΌ μ 리 with Python (2) 2022.01.26 [λ°±μ€] 14916 κ±°μ€λ¦λ with Python (0) 2022.01.26 [λ°±μ€] 14502 μ°κ΅¬μ with Python (0) 2022.01.24 [λ°±μ€] 11504 λλ € λλ € λλ¦Όν! with Python (0) 2022.01.11 [λ°±μ€] 10819 μ°¨μ΄λ₯Ό μ΅λλ‘ with Python (0) 2022.01.11