사용한 것
- 문제를 해결하기 위해 정렬, 
HashMap 사용 
풀이 방법
- 입력 값을 
arr, tmpArr 두 배열로 받는다. 
tmpArr을 정렬하고 map에 값과 몇 번째 순서인지 넣어준다. 
arr을 순회하며 map에서 해당 값의 value가 해당 값보다 큰 값의 수이므로 sb에 추가 후 출력한다. 
코드
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int length = Integer.parseInt(br.readLine());
        int[] arr = new int[length];
        int[] tmpArr = new int[length];
        StringTokenizer st = new StringTokenizer(br.readLine());
        int index = 0;
        while (st.hasMoreTokens()) {
            int num = Integer.parseInt(st.nextToken());
            arr[index] = num;
            tmpArr[index] = num;
            index++;
        }
        Arrays.sort(tmpArr);
        Map<Integer, Integer> map = new HashMap<>();
        int ct = 0;
        for (int i = 0; i < length; i++) {
            if (!map.containsKey(tmpArr[i])) {
                map.put(tmpArr[i], ct++);
            }
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            sb.append(map.get(arr[i]) + " ");
        }
        System.out.println(sb);
    }
}