만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

map, filter

면접 대비

시간 제한1초메모리 제한1024 MB

요약
N개의 정수 배열에 map과 filter 명령을 차례로 적용하고, 각 filter 명령 뒤에 남는 원소 개수를 출력합니다.
난이도

보통10점 중 5점

유형
배열, 해시맵, 구현
정답자
아직 제출이 없습니다

문제

최근 자바스크립트를 공부한 효석이는 map, filter에 푹 빠졌다. 그래서 map, filter 명령을 처리하는 프로그램을 직접 만들었다.

프로그램은 정수로 이루어진 길이 NN의 배열 AA를 가지고 시작한다. 프로그램은 한 줄에 명령의 종류, 연산자, 정수 xx를 입력받아 동작을 수행한다.

프로그램이 처리할 수 있는 명령은 다음과 같다.

  • map 명령
    • map + xx: 배열의 모든 원소에 xx를 더한다.
    • map * xx: 배열의 모든 원소에 xx를 곱한다.
    • map % xx: 배열의 모든 원소를 xx로 나눈 나머지로 바꾼다.
  • filter 명령
    • filter >= xx: 배열의 원소 중 xx보다 크거나 같은 원소를 가진 새로운 배열을 반환한다.
    • filter <= xx: 배열의 원소 중 xx보다 작거나 같은 원소를 가진 새로운 배열을 반환한다.
    • filter == xx: 배열의 원소 중 xx와 같은 원소를 가진 새로운 배열을 반환한다.

처음 배열 AA와 명령들이 주어졌을 때, filter 명령의 수행 결과로 반환받은 새로운 배열의 길이를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 배열의 길이 NN이 주어진다. (1≤N≤100 000)(1 \leq N \leq 100\,000)

둘째 줄에 프로그램이 처음 가지고 있는 배열 AA의 원소 AiA_i가 공백으로 구분되어 주어진다. (1≤Ai≤100 000)(1 \leq A_i \leq 100\,000)

셋째 줄에 명령의 개수 QQ가 주어진다. (1≤Q≤100 000)(1 \leq Q \leq 100\,000)

넷째 줄부터 Q+3Q+3번째 줄까지 한 줄에 하나씩 명령이 주어진다. 하나의 명령은 명령의 종류, 연산자, 정수 xx 3개가 공백으로 구분되어 주어진다.

명령의 종류가 map인 경우 아래의 제한이 적용된다.

  • 1≤x≤1001 \leq x \leq 100

명령의 종류가 filter인 경우 아래의 제한이 적용된다.

  • 0≤x≤263−10 \leq x \leq 2^{63} - 1

명령을 처리하는 과정에서 0≤Ai≤263−10 \leq A_i \leq 2^{63} - 1임이 보장된다.

출력

filter 명령을 수행할 때마다 filter 명령으로 반환받은 배열의 원소 개수를 출력한다.

예제1

  1. 예제 1

    입력
    5
    5 3 4 1 2
    7
    map + 4
    filter >= 7
    map * 3
    filter >= 22
    filter <= 22
    map % 5
    filter >= 2
    
    예상 출력
    3
    2
    3
    3