1. 문제 링크
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
2. 문제 및 입출력예제
3. 문제 풀이
일단 clone()을 이용해 배열을 복사한다.
배열을 정렬하고 그 순서대로 HashMap에 추가한다. (Map이 중복 불가이기 때문)
그러면 그 보다 작은 수의 개수는 i가 아니라 index로 별도로 구해야 한다.
4. 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
public class Main {
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] X = new int[N];
String[] split = br.readLine().split(" ");
for (int i = 0; i < N; i++) {
X[i] = Integer.parseInt(split[i]);
}
int[] sortX = X.clone();
Arrays.sort(sortX);
HashMap<Integer, Integer> map = new HashMap<>();
int idx = 0;
for (int i = 0; i < N;i++) {
if(!map.containsKey(sortX[i])) {
map.put(sortX[i], idx++);
}
}
for (int i = 0; i < N; i++) {
sb.append(map.get(X[i]) + " ");
}
System.out.println(sb);
}
}
'ALGORITHM' 카테고리의 다른 글
백준 3040 백설공주와 일곱 난쟁이 (Java) (0) | 2023.03.02 |
---|---|
백준 9084 동전 (Java) (0) | 2023.03.01 |
백준 2563 색종이 (Java) (0) | 2023.02.27 |
백준 1992 쿼드 트리 (Java) (0) | 2023.02.26 |
백준 11286 절댓값 힙 (Java) (0) | 2023.02.25 |