문제 설명
빈 배열 $A$가 있다. 이때 다음 쿼리를 처리해야 한다.
$1\ x$ : $A$의 끝에 $x$를 추가한다.
$2\ x$ : $A$에서 $x$를 삭제한다. 만약 $x$가 두 개 이상 있다면, 그중 가장 앞에 있는 하나만 삭제한다. 항상 배열에 x가 있는 쿼리만 주어진다.
$3$ : $A$의 모든 원소 중 소수인 값을 더한 값을 출력한다.
쿼리를 처리하는 프로그램을 작성한다.
입력 설명
첫 번째 줄에 쿼리의 수 $q$가 주어진다. $(1 ≤ q ≤ 10^5)$
두 번째 줄부터 $q+1$ 번째 줄까지 쿼리가 주어진다. $(0 ≤ x ≤ 10^5)$
3번 쿼리가 하나 이상 등장함이 보장된다.
출력 설명
3번 쿼리가 등장할 때마다, 한 줄에 하나씩 3번 쿼리의 답을 출력한다.
입력 예시 Copy
10
1 10
1 7
1 5
3
1 2
2 5
3
2 10
1 29
3
출력 예시 Copy
12
9
38
도움
이 문제는 빠른 입출력을 요구한다.
그리고 매번 sys.stdin.readline()을 계속 작성해주는 것이 번거로울 수 있다. 그럴 땐 변수에 저장해서 사용하는 방법을 활용할 수 있다. 아래의 경우에는 input이라는 변수에 저장을 하는데, 이렇게 하면 기본 input 함수 대신 sys.stdin.readline을 사용하도록 덮어씌운다.
import sys data = sys.stdin.readline().rstrip()sys.stdin.readline() 으로 빠른 입력을 받을 수 있다. 이때, 데이터에 줄바꿈 문자(\n)가 포함되어 입력받아진다는 점을 주의해야 한다. 그렇기 때문에 입력을 받고 나서 rstrip() 함수를 사용하여 줄바꿈 문자를 제거해주어야 한다.
그리고 매번 sys.stdin.readline()을 계속 작성해주는 것이 번거로울 수 있다. 그럴 땐 변수에 저장해서 사용하는 방법을 활용할 수 있다. 아래의 경우에는 input이라는 변수에 저장을 하는데, 이렇게 하면 기본 input 함수 대신 sys.stdin.readline을 사용하도록 덮어씌운다.
import sys input = sys.stdin.readline data = input().rstrip()