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

원숭2·2022년 2월 14일
0

백준

목록 보기
39/54

문제

풀이

  1. permutations를 통해 모든 연산자의 조합을 구함.
  2. for문을 돌며 각 연산자의 조합에 대해서, enumerate함수를 사용하여 하나씩 계산 후 결과를 저장하는 res배열에 넣어줌.
  3. res배열의 max, min값을 각각 print 함.

코드

from itertools import permutations

def calc() :
    n = int(input())
    nums = list(map(int, input().split()))
    tmp = list(map(int, input().split()))
    op = []
    for i in range(len(tmp)) :
        if i == 0 :
            for _ in range(tmp[i]) :
                op.append('+')
        elif i == 1 :
            for _ in range(tmp[i]) :
                op.append('-')
        elif i == 2 :
            for _ in range(tmp[i]) :
                op.append('*')
        else :
            for _ in range(tmp[i]) :
                op.append('/')        
    
    per = list(map(lambda x : list(x), permutations(op, sum(tmp))))

    res = []
    for p in per :
        tmp = nums[0]
        for i in enumerate(p, start = 1) :
            if i[1] == '+' :
                tmp += nums[i[0]]
            elif i[1] == '-' :
                tmp -= nums[i[0]]
            elif i[1] == '*' :
                tmp *= nums[i[0]]
            else :
                if tmp < 0 :
                    tmp = -(-tmp // nums[i[0]])
                else :
                    tmp //= nums[i[0]]
        res.append(tmp)
    
    print(max(res))
    print(min(res))
            
calc()

0개의 댓글