Programming/Coding Test
Arrays.sort(), StringBuilder 18870 좌표압축
Nolja놀자
2021. 12. 4. 03:11
반응형
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
import java.util.*;
import java.util.Map.Entry;
public class CoordinateCompression_18870_me {
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
Integer N = sc.nextInt();
Integer [] arr = new Integer[N];
Map<Integer, Integer> orderedMap = new HashMap<>();
for (int i=0; i<N; i++){
arr[i] = sc.nextInt();
}
Integer [] sortedArr = arr.clone();
Arrays.sort(sortedArr);
Integer cnt = 0;
for(int num : sortedArr){
if (!orderedMap.containsKey(num)){
orderedMap.put(num, cnt++);
}
};
StringBuilder sb = new StringBuilder();
// 하나씩 출력하다가 StringBuiler 객체에 넣어서 한번에 출력하니까 성공뜸
for(int num : arr){
sb.append(orderedMap.get(num)).append(' ');
}
System.out.println(sb.toString());
}
}
반응형