반응형

 

 

 

<코드>

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

 

반응형

+ Recent posts