Map 의 기본 개념만 알면 풀수 있는 간단한 문제였다.
오름차순으로 sort_arr 정렬에 재 배치하고
각 정렬된 해당 값을 키값으로 저장한뒤 순서를 value 값으로 Map 에 저장하여
해당 key값에 저장된 value를 가져오는 방법
But,,,, StringBuilder를 쓰지 않을땐 시간초과
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] agrs) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
int[] sort_arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
sort_arr[i] = arr[i];
}
Arrays.sort(sort_arr);
int n = 0;
for (int i = 0; i < N; i++) {
if (!hm.containsKey(sort_arr[i])) {
hm.put(sort_arr[i], n);
n++;
}
}
for (int i = 0; i < N; i++) {
sb.append(hm.get(arr[i]) + " ");
}
System.out.println(sb);
}
}
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
'프로그래밍 & IT > Algorithm' 카테고리의 다른 글
[알고리즘] 백준 7576번 토마토 :: 우유 (0) | 2022.04.07 |
---|---|
[알고리즘] 백준 2606번 바이러스 :: 우유 (0) | 2022.03.29 |
[알고리즘] 백준 10814번 나이순 정렬 :: 우유 (0) | 2022.03.05 |
[알고리즘] 백준 11650번 좌표 정렬하기 :: 우유 (0) | 2022.03.05 |
[알고리즘] 백준 2089번 -2진수 :: 우유 (0) | 2022.03.04 |