백준 연산자 끼워넣기 코드 및 해설 (파이썬)
2021. 9. 8. 14:24ㆍalgorithm
반응형
https://www.acmicpc.net/problem/14888
입력으로 주어진 수와 연산자를 저장합니다. 주어진 연산자 조건에 따라 가능한 모든 중복없는 배열을 permutated_operators에 저장하고, 각 배열마다 계산한 값을 vals에 저장합니다. 음수로 나누기를 할 땐 문제에서 주어진 조건에 맞게 변형 후 계산합니다. 이렇게 구한 값들중 최댓값과 최솟값을 차례로 프린트합니다.
import sys
from itertools import permutations
# 수의 개수
N = int(sys.stdin.readline())
# 주어진 수들
nums = list(map(int, sys.stdin.readline().split()))
# 연산자
operator_list = list(map(int, sys.stdin.readline().split()))
operators = []
for i, op in enumerate(operator_list):
if i == 0:
operators += ['+'] * op
elif i == 1:
operators += ['-'] * op
elif i == 2:
operators += ['*'] * op
else:
operators += ['//'] * op
# permutations은 같은 기호 2개 이상 있을 때 둘을 다른 것으로 구분하므로, set을 통해 중복을 제거해줘야 함
permuted_operators = list(set(permutations(operators)))
# 연산자 permutation에 따른 모든 값들의 리스트
vals = []
for op in permuted_operators:
val = nums[0]
for num, o in zip(nums[1:], op):
if o == '+':
val += num
elif o == '-':
val -= num
elif o == '*':
val *= num
else:
if val < 0:
val = (-1) * (((-1) * val) // num)
else:
val //= num
vals.append(val)
print(max(vals)) # 최댓값
print(min(vals)) # 최솟값
반응형
'algorithm' 카테고리의 다른 글
프로그래머스 입실 퇴실 코드 및 해설 (파이썬) (0) | 2021.09.14 |
---|---|
백준 연구소 코드 및 해설 (파이썬) (0) | 2021.09.08 |
백준 경쟁적 전염 코드 및 해설 (파이썬) (0) | 2021.09.08 |
백준 특정 거리의 도시 찾기 코드 및 해설 (파이썬) (0) | 2021.09.07 |
백준 치킨 배달 코드 및 해설 (파이썬) (0) | 2021.09.02 |