RUBY

[삼성] 연산자 끼워넣기 본문

PS/This

[삼성] 연산자 끼워넣기

RUBY_루비 2020. 8. 12. 15:55

출처:: 삼성전자 SW역량테스트

분류:: DFS

 

1. 문제 이해 및 해결과정

 

2. 풀이방법

  1.DFS

#연산자 끼워넣기
#https://www.acmicpc.net/problem/14888
import sys
sys.stdin = open("input.txt","r")

n=int(input())
num=list(map(int,input().split()))
op=list(map(int,input().split()))

maxv=int(-1e9)
minv=int(1e9)

def DFS(d,value):
    global maxv,minv
    if d==(n-1):
        maxv=max(maxv,value)
        minv=min(minv,value)
        return
    else:
        for i in range(4):
            if op[i]>0:
                op[i] -= 1
                if i==0:
                    DFS(d + 1, value + num[d+1])
                elif i==1:
                    DFS(d + 1, value - num[d+1])
                elif i == 2:
                    DFS(d + 1, value * num[d+1])
                elif i == 3: 
                    # DFS(d + 1, int(value // num[d + 1])) => 음수 일 경우라도 이렇게 하면 됨
                    if value<0:
                        DFS(d + 1, -(value*-1 // num[d+1]))
                    else:
                        DFS(d + 1, value // num[d + 1])
                op[i] += 1

DFS(0,num[0])
print(maxv)
print(minv)

3. 오답원인

 

4. 알게된 점

 

'PS > This' 카테고리의 다른 글

[Kakao] 실패율  (0) 2020.08.12
국영수  (0) 2020.08.12
문자열 압축  (0) 2020.08.11
커리큘럼  (0) 2020.08.10
도시 분할 계획  (0) 2020.08.10
Comments