728x90
반응형
1. 복사 배열을 만든다.
2. 순회하면서 값과 인덱스를 저장하는 해시맵을 구성한다.
3. 해당 값을 꺼내 출력한다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashMap<Integer,Integer> hashMap = new HashMap<>();
int n = Integer.parseInt(br.readLine());
int [] answer = new int [n];
StringTokenizer st = new StringTokenizer(br.readLine()," ");
for (int i = 0; i < n; i++) {
answer[i] = Integer.parseInt(st.nextToken());
}
int [] tmp = answer.clone();
Arrays.sort(tmp);
int cnt = 0;
for (int i = 0; i < n; i++) {
if(!hashMap.containsKey(tmp[i])){
hashMap.put(tmp[i],cnt++);
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
sb.append(hashMap.get(answer[i])).append(' ');
}
System.out.println(sb.toString());
}
}
728x90
반응형
'알고리즘 > 수학문제' 카테고리의 다른 글
[백준] 2003번 수들의 합 2 (0) | 2022.05.23 |
---|---|
[프로그래머스] 약수의 개수와 덧셈 #Java (0) | 2022.05.20 |
[프로그래머스] 없는 숫자 더하기 #Java (0) | 2022.05.20 |
[백준] 11723번 집합 #Java (0) | 2022.05.18 |
[백준] 9625번 BABBA #Java (0) | 2022.05.17 |