반응형

 

 

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());

    }
}

 

 

 

 

반응형

+ Recent posts