>> 문제 바로가기 (https://www.acmicpc.net/problem/18917)
문제
처음에 0이 하나 포함되어있는 배열 A가 있다. 이때, 다음 쿼리를 수행해야 한다.
- 1 x: A의 가장 뒤에 x를 추가한다.
- 2 x: A에서 x를 제거한다. A에 x가 두 개 이상 있는 경우에는 가장 앞에 있는 하나만 제거한다. 항상 A에 x가 있는 쿼리만 주어진다.
- 3: A에 포함된 모든 원소를 더한 값을 출력한다.
- 4: A에 포함된 모든 원소를 XOR한 값을 출력한다.
입력
첫째 줄에는 쿼리의 개수 M이 주어진다. 둘째 줄부터 다음 M 개의 줄에 쿼리가 주어진다.
출력
3번 혹은 4번 쿼리가 등장할 때마다, 답을 한 줄에 하나씩 출력한다.
풀이 과정
합을 누적시키는 변수 하나와, XOR을 누적시키는 변수 하나를 만들어 관리한다.
2번 쿼리를 수행할 땐 누적된 합에서 x 원소를 지우면 되고, 누적된 XOR에서 다시 한 번 XOR 을 하면 제외된다. ( XOR의 성질 -> A ^ A = 0 )
import sys
input = sys.stdin.readline
sums = 0
xors = 0
m = int(input().rstrip())
for _ in range(m):
order = list(map(int, input().rstrip().split()))
if order[0] == 1:
sums += order[1]
xors ^= order[1]
elif order[0] == 2:
sums -= order[1]
xors ^= order[1]
elif order[0] == 3:
print(sums)
else:
print(xors)
'-- 예전 기록 > BOJ' 카테고리의 다른 글
[ BOJ ] 20922 : 겹치는 건 싫어 ( SILVER 1 ) / Python (0) | 2024.02.06 |
---|---|
[ BOJ ] 5567 : 결혼식 ( SILVER 2 ) / Python (0) | 2024.02.06 |
[ BOJ ] 15659 : 연산자 끼워넣기 (3) ( GOLD 4 ) / C (0) | 2024.02.05 |
[ BOJ ] 26598 : 색종이와 공예 ( GOLD 5 ) / Python (0) | 2024.02.05 |
[ BOJ ] 21922 : 학부 연구생 민상 ( GOLD 5 ) / Python (0) | 2024.02.04 |