만드는 중입니다

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

고유한 값

면접 대비

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

요약
주어진 배열에서 같은 값이 두 번 이상 나오지 않는 연속된 부분 배열의 개수를 셉니다.
난이도

보통10점 중 4점

유형
슬라이딩 윈도우, 투 포인터, 해시맵
정답자
아직 제출이 없습니다

문제

아루프는 컴퓨터 과학 1 수업 학생들에게 줄 연습 문제를 많이 만들어야 한다. 문제 대부분이 배열을 다루기 때문에 학생들에게 줄 배열을 직접 생성해야 한다. 그는 어려운 연습 문제를 내고 싶지 않아서, 학생들에게 주는 배열의 값이 모두 서로 다르다고 항상 보장한다. 즉, 어떤 배열에서도 같은 값이 두 번 나타나지 않는다.

안타깝게도 아루프는 배열을 만들기가 귀찮다. 약 20년 전 컴퓨터 과학 1을 가르치기 시작했을 때, 그는 재사용하려고 아주 긴 배열 하나를 만들었다. 이 긴 배열에는 중복된 값이 있을 수 있다. 문제를 만들 때는 이 긴 배열의 연속된 부분 수열을 골라 문제의 배열로 쓰는데, 그 부분 수열에 중복된 값이 없어야 한다. 긴 배열이 a[0],a[1],…,a[n−1]a[0], a[1], \ldots, a[n-1]이면, 연속된 부분 수열은 0≤i≤j≤n−10 \le i \le j \le n-1을 만족하는 a[i],a[i+1],…,a[j]a[i], a[i+1], \ldots, a[j]이다.

nn개의 정수로 이루어진 배열이 주어질 때, 중복된 값이 없는 연속된 부분 수열의 개수를 구하라. 내용이 같더라도 원래 배열에서 시작 위치가 다르면 서로 다른 부분 수열로 센다.

입력

첫 줄에 배열의 크기를 나타내는 양의 정수 nn (1≤n≤1051 \le n \le 10^5)이 주어진다. 다음 줄에는 배열의 값이 순서대로 공백으로 구분되어 nn개 주어진다. 각 값은 11 이상 10910^9 이하의 정수이다.

출력

중복된 값이 없는 연속된 부분 수열의 개수를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    5
    1 1 2 1 5
    
    예상 출력
    9
    
  2. 예제 2

    입력
    8
    2 12 3 12 3 2 6 9
    
    예상 출력
    22