n = int(input())
scores = list(map(int, input().split()))
print(sum(scores))

이렇게 쉽게 풀 수는 있으나, 진행자의 의도에 맞게 자료구조로 풀어보도록 하자.

우선 어떤 자료구조에 숫자를 넣을때 그 반대가 있는지 찾고 있으면 그 반대도 없애고 넣으려는 것도 없애고, 아님 넣어야 되는 로직이다.

내가 아는 자료구조는 list, tuple 이 생각난다.

list. if in list?

tuple. 적절치 않아 보인다. 이건 그냥 벡터이기 땜에

n = int(input())
scores = list(map(int, input().split()))
score_list = []
for i in range(n):
	if -scores[i] in score_list:
		score_list.remove(-scores[i])
	else:
		score_list.append(scores[i])

print(sum(score_list))

list .remove(값) .append(값)을 사용한다.

이것은 사실

idx = score_list.index(-scores[i])
del score_list[idx]

와 같다. O(n)이 든다.

timeout이 걸린다… 이래서 set을 사용하는건가.

빠르기는 엄청나게 빠른 것은 우리가 너무나도 많이도 배운 hash table이다. 이것이 set이다.