PS/Baekjoon Online Judge

[백준 13144] List of Unique Numbers [Java]

kimyoungrok 2024. 6. 29. 18:21
728x90

문제

길이가 N인 수열이 주어질 때, 수열에서 연속한 1개 이상의 수를 뽑았을 때 같은 수가 여러 번 등장하지 않는 경우의 수를 구하는 프로그램을 작성하여라.

입력

첫 번째 줄에는 수열의 길이 N이 주어진다. (1 ≤ N ≤ 100,000)

두 번째 줄에는 수열을 나타내는 N개의 정수가 주어진다. 수열에 나타나는 수는 모두 1 이상 100,000 이하이다.

출력

조건을 만족하는 경우의 수를 출력한다.


풀이

중복되지 않는 요소로 이루어진 부분 수열의 갯수를 찾는 문제다.

start와 end는 0부터 시작하며, end는 부분수열의 끝에 위치시켜주자.

end번째 요소가 부분 수열이 가진 요소가 아닐 때 까지( visited[arr[end]] ) 방문 표시를하고 end를 늘려주자. 

부분 수열이 가진 요소가 중복해서 나왔다면 탐색을 멈추고 start를 1개씩 늘려가며 부분 수열의 갯수( cnt )를 세주자.


소스코드

보기


출처

https://www.acmicpc.net/problem/13144

728x90