얼렁뚱땅 백준 문제풀이

[백준 문제풀이] 얼렁뚱땅 2629번 양팔저울 풀이

MOSTAR 2022. 5. 16. 20:39

으앙 너무어려워 너무어려워

너무어려워!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

https://www.acmicpc.net/problem/2629

n = int(input())
gram = list(map(int,input().split()))
m = int(input())
circle = list(map(int,input().split()))

dp = [[0] * 15001 for _ in range(n+1)]
possible = []

def calculation(left, right, num) :
	new = abs(left-right)

	if new not in possible:
		possible.append(new)

	if num == n :
		return 0

	if dp[num][new] == 0 :
		calculation(left+gram[num], right, num+1)
		calculation(left, right+gram[num], num+1)
		calculation(left, right, num+1)

		dp[num][new] = 1

calculation(0,0,0)
for i in range(len(circle)) :
	if circle[i] in possible :
		print('Y', end= ' ')
	else :
		print('N', end = ' ')

사실 아직도 이해안된 부분도 있다.. 하ㅏㅏ;..