문제
https://www.acmicpc.net/problem/13144
코드
import java.util.*;
import java.io.*;
public class b13144 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n=Integer.parseInt(br.readLine());
int[] arr=new int[n];
long answer=0;
st=new StringTokenizer(br.readLine());
for(int i=0; i<n; i++){
arr[i]=Integer.parseInt(st.nextToken());
}
// 투 포인터
int end=0;
boolean[] visited=new boolean[100001];
for(int i=0; i<n; i++){
while(end<n && visited[arr[end]]==false){
visited[arr[end]]=true;
end++;
}
visited[arr[i]]=false;
answer+=(end-i);
}
System.out.println(answer);
}
}
시간복잡도
O(n)
어려웠던 점
문제 조건상 answer이 int 범위를 벗어나는 것을 늦게 알아차려 해결하는데 시간이 걸렸다.
'문제풀이 > 기타' 카테고리의 다른 글
[파이썬] Pro 과제 진행하기 (0) | 2023.12.20 |
---|---|
[JAVA] [분할정복] Pro 쿼드압축 후 개수 세기 (0) | 2023.07.26 |
[JAVA] Pro n^2 배열 자르기 (0) | 2023.07.25 |
[JAVA] Pro 롤케이크 자르기 (0) | 2023.07.24 |
[JAVA] Pro 우박수열 정적분 (0) | 2023.07.21 |