728x90
📌 문제
https://www.acmicpc.net/problem/14888
📌 문제 접근 방법
- 연산자를 입력된 개수만큼 리스트에 넣은 후 순열을 만들어줬다.
똑같은 연산자가 2번 이상 들어갈 경우, 중복될 수 있으므로 set을 사용해서 중복을 제거해줬다. - 숫자와 연산자를 순회하면서 앞에서부터 계산한 값을 results에 append 해줬다.
- results에서 최대값과 최소값을 출력했다.
📌 코드
from itertools import permutations
def calculate(num1, num2, operator):
if operator == '+':
return num1 + num2
elif operator == '-':
return num1 - num2
elif operator == '*':
return num1 * num2
elif operator == '/':
if num1 >= 0 :
return num1//num2
else:
return -((-num1)//num2)
N = int(input())
numbers = list(map(int, input().split()))
temp = list(map(int, input().split()))
operator = ['+', '-', '*', '/']
operators = []
for i in range(4):
for _ in range(temp[i]):
operators.append(operator[i])
results = []
for opers in set(permutations(operators)):
result = numbers[0]
for i in range(N-1):
result = calculate(result, numbers[i+1], opers[i])
results.append(result)
print(max(results))
print(min(results))
728x90
'ALGORITHM > BAEKJOON' 카테고리의 다른 글
[BOJ/Python] 20055.컨베이어 벨트 위의 로봇 (0) | 2022.02.27 |
---|---|
[BOJ/Python] 2096. 내려가기 (0) | 2021.12.08 |
[BOJ/Python] 5052. 전화번호 목록 (0) | 2021.10.30 |
[BOJ/Python] 14719. 빗물 (0) | 2021.10.29 |
[BOJ/Python] 2688. 줄어들지 않아 (0) | 2021.10.28 |
댓글