[백준] 14888 연산자 끼워넣기

yunu·2022년 5월 1일
0
post-thumbnail

14888 연산자 끼워넣기

풀이

첫번째 수는 연산자가 항상 + 이고 나머지 숫자들에 대해 서로 다른 연산자를 사용하여 풀었다. 처음에 연산자 우선순위까지 고려해야 되는 줄 알고 엄청 어려울 줄 알았지만 그냥 순서대로 연산하면 되서 해결할 수 있었다. 그리고 음수를 양수로 나눌 때는 C++14의 기준을 따른다.라는 규칙이 있어서 나눗셈 연산자는 a // b이 아닌 int(a / b)와 같이 연산시켰다.

코드

import sys

N = int(sys.stdin.readline())
nums = list(map(int, sys.stdin.readline()[:-1].split()))
opers = list(map(int, sys.stdin.readline()[:-1].split()))

minNum, maxNum = 100000001, -100000001

def calculate(curr, idx):
    if idx == len(nums):
        global maxNum, minNum
        maxNum = max(maxNum, curr)
        minNum = min(minNum, curr)
        return
    for i in range(4):
        if opers[i] > 0:
            temp = curr
            if i == 0:
                temp += nums[idx]
            elif i == 1:
                temp -= nums[idx]
            elif i == 2:
                temp *= nums[idx]
            else:
                temp = int(temp / nums[idx])
            opers[i] -= 1
            calculate(temp, idx + 1)
            opers[i] += 1

calculate(nums[0], 1)

print(maxNum)
print(minNum)
profile
rip

0개의 댓글