백준
백준 18870 좌표 압축(Java)
Park DJ
2023. 2. 7. 23:25
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
해석 및 팁
이 문제는 좌표 압축을 사용하는 문제입니다. 자세한 내용은 위 영상을 참조하시기 바랍니다.
https://www.youtube.com/watch?v=_7dFwnPqahg&ab_channel=IOIKOREA
Java 코드
import java.util.Scanner;
import java.util.Arrays;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
HashMap<Integer, Integer> map = new HashMap<>();
int count = 0;
int n = sc.nextInt();
int[] arr = new int[n];
int[] sort = new int[n];
for(int i = 0; i < n; i++) arr[i] = sort[i] = sc.nextInt();
Arrays.sort(sort);
for(int i = 0; i < n; i++) {
if(!map.containsKey(sort[i])) map.put(sort[i], count++);
}
for(int i = 0; i < n; i++) sb.append(map.get(arr[i])+" ");
System.out.println(sb);
}
}