반응형


<코드>
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuffer sb = new StringBuffer();
int N = Integer.parseInt(br.readLine());
int tmp1[][] = new int[N][2]; // [좌표][순서]
int tmp2[][] = new int[N][2]; // [순서][압축결과]
int cnt = 0; // 중복 체크
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
tmp1[i][0] = Integer.parseInt(st.nextToken());
tmp1[i][1] = i;
}
Arrays.sort(tmp1, (a,b)->{
return a[0]-b[0];
});
tmp2[0][0] = tmp1[0][1];
tmp2[0][1] = 0;
for (int i = 1; i < N; i++) {
if(tmp1[i][0] == tmp1[i-1][0]) cnt++;
tmp2[i][0] = tmp1[i][1];
tmp2[i][1] = i-cnt;
}
Arrays.sort(tmp2, (a,b)->{
return a[0]-b[0];
});
for (int i = 0; i < N; i++) {
sb.append(tmp2[i][1]+" ");
}
System.out.println(sb);
}
}

https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
반응형
'🧩PS > 🥉Easy' 카테고리의 다른 글
[JAVA] 백준 11053번 - 가장 긴 증가하는 부분 수열 (0) | 2021.10.24 |
---|---|
[JAVA] 백준 9461번 - 파도반 수열 (0) | 2021.10.15 |
[JAVA] 백준 10814번 - 나이순 정렬 (0) | 2021.10.07 |
[JAVA] 백준 11651번 - 좌표 정렬하기 2 (0) | 2021.10.07 |
[JAVA] 백준 11650번 - 좌표 정렬하기 (0) | 2021.10.07 |