스택을 써야겠다고 느꼈고, 그래서 list를 썼다.

N = int(input())
D = input()
S = list(map(int, input().split()))

stack = [(0,0,1)]
set = {(0,0)}
coor = (0,0)

for i in range(N):
	d = D[i]
	s = S[i]
	if d == 'R':
		coor = (coor[0]+1, coor[1])
	elif d == 'U':
		coor = (coor[0], coor[1]+1) 
	elif d == 'L':
		coor = (coor[0]-1, coor[1])
	elif d == 'D':
		coor = (coor[0], coor[1]-1)

	# pop until not in set
	
	while coor in set:
		set.remove((stack[-1][0], stack[-1][1]))
		del stack[-1]
	
	stack.append((coor[0], coor[1], s))
	set.add(coor)

print(sum(x[2] for x in stack))

우선 기계적으로 input().split()을 쓰면 안된다. D는 공백으로 나눠진게 아니라 붙어 있기 때문.

set .remove와 list .remove는 값으로 삭제한다는 점에서 일관성이 있다.