동종일까 이종일까?

면접 대비

시간 제한3초메모리 제한256 MB

요약
삽입과 첫 번째 항목 삭제 연산을 처리하면서 매번 리스트가 동종, 이종, 둘 다, 또는 둘 다 아님인지 판별합니다.
난이도

보통10점 중 4점

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

문제

처음에 비어 있는 수의 목록에 대해 다음 두 가지 연산을 처리한다.

  • insert number — 주어진 수를 목록의 맨 뒤에 추가한다.
  • delete number — 주어진 수가 처음 나타나는 원소 하나를 제거한다. 목록에 그 수가 없으면 목록은 그대로 유지된다.

예를 들어 목록 [1,2,1][1, 2, 1]에 44를 삽입하면 [1,2,1,4][1, 2, 1, 4]가 된다. 이 목록에서 11을 삭제하면 [2,1,4][2, 1, 4]가 되고, [1,2,1,4][1, 2, 1, 4]에서 33을 삭제하면 목록은 변하지 않는다.

목록에 서로 같은 수가 적어도 두 개 있으면 그 목록은 동종(homogeneous)이고, 서로 다른 수가 적어도 두 개 있으면 이종(heterogeneous)이다. 예를 들어 [2,2][2, 2]는 동종, [2,1,4][2, 1, 4]는 이종, [1,2,1,4][1, 2, 1, 4]는 둘 다에 해당하며, 빈 목록은 둘 중 어느 것에도 해당하지 않는다.

비어 있는 목록에서 시작하여 여러 개의 insert와 delete 연산을 처리하고, 각 연산 이후 목록이 동종인지, 이종인지, 둘 다인지, 아니면 둘 다 아닌지를 판별하는 프로그램을 작성하시오.

입력

첫째 줄에 연산의 개수 nn이 주어진다 (1≤n≤100 0001 \le n \le 100\,000).

이어지는 nn개의 줄에는 각각 하나의 연산이 주어진다. 각 연산은 단어 insert 또는 delete와 그 뒤에 오는 정수 kk로 이루어진다 (−109≤k≤109-10^9 \le k \le 10^9).

출력

각 연산 이후 목록의 상태를 나타내는 단어 하나를 한 줄에 출력한다.

  • both — 목록이 동종이면서 이종인 경우.
  • homo — 목록이 동종이지만 이종은 아닌 경우.
  • hetero — 목록이 이종이지만 동종은 아닌 경우.
  • neither — 목록이 동종도 이종도 아닌 경우.

예제2

  1. 예제 1

    입력
    11
    insert 1
    insert 2
    insert 1
    insert 4
    delete 1
    delete 3
    delete 2
    delete 1
    insert 4
    delete 4
    delete 4
    
    예상 출력
    neither
    hetero
    both
    both
    hetero
    hetero
    hetero
    neither
    homo
    neither
    neither
    
  2. 예제 2

    입력
    4
    insert 7
    insert 7
    insert 5
    delete 5
    
    예상 출력
    neither
    homo
    both
    homo