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이다.