-
[백준] 14888번 문제 (연산자 끼워넣기) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 10. 14. 13:11
https://www.acmicpc.net/problem/14888
from itertools import permutations import sys t = int(input()) nums = list(map(int, input().split())) count = list(map(int, input().split())) operators = ["pls", "min", "mul", "div"] arr = [] for i in range(4): for j in range(count[i]): arr.append(operators[i]) result = [] for i in set(permutations(arr)): index = 0 num = nums[index] for oprt in i: if oprt == "pls": num += nums[index + 1] elif oprt == "min": num -= nums[index + 1] elif oprt == "mul": num *= nums[index + 1] else: if num < 0: num = -(-num // nums[index + 1]) else: num = num // nums[index + 1] index += 1 result.append(num) print(max(result)) print(min(result))
브루트포스 문제다.
모든 경우의 수를 계산하기 위해 permutations로 순열을 구한다.
그리고 그 순열로 연산자와 매핑해서 수를 계산한다.
단, permutations은 중복된 순열이 나오므로 set으로 한 번 감싸준다.
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 1806번 문제 (부분합) 파이썬(Python) 풀이 (0) 2021.10.14 [백준] 14719번 문제 (빗물) 파이썬(Python) 풀이 (0) 2021.10.14 [백준] 1753번 문제 (최단경로) 파이썬(Python) 풀이 (0) 2021.10.12 [백준] 1932번 문제 (정수 삼각형) 파이썬(Python) 풀이 (0) 2021.10.04 [백준] 2210번 문제 (숫자판 점프) 파이썬(Python) 풀이 (0) 2021.09.23