풀이
- 일반 배열, 정렬된 배열을 통해 hashMap에 순서를 저장하고 일반 배열에 값에 맞는 value를 찾으면 된다. 중요한점은 val가 아닐때 i로 주면 i는 순차적으로 증가하기 때문에 꼭 넣고 난 후 다음 순번을 저장할 cnt를 지정해줘야한다는것 !
package problem_solving.sort;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Scanner;
public class BaekJoon_18870 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.next());
Integer [] arr = new Integer[n];
Integer [] sortArr = new Integer[n];
for(int i = 0 ; i <arr.length; i++) {
int num = Integer.parseInt(sc.next());
arr[i] = num;
sortArr[i] = num;
}
Arrays.sort(sortArr);
int cnt = 0 ;
HashMap<Integer,Integer> hm = new HashMap<>();
for(int i= 0 ; i < arr.length;i++) {
if( hm.containsKey(sortArr[i] )) {
int val = hm.get(sortArr[i]);
int size = hm.size();
hm.put(sortArr[i], val);
if( size != hm.size()) {
cnt++;
}
} else {
hm.put(sortArr[i], cnt);
cnt++;
}
}
StringBuilder sb = new StringBuilder();
for(int i =0 ; i< arr.length; i++ ) {
int val = hm.get(arr[i]) ;
sb.append(val+" ");
}
System.out.println(sb.toString());
}
}