반응형
백준 Baekjoon 18870번 좌표 압축 - JAVA
문제 풀이
주어진 입력 값들을 정렬했을 때 몇번째 순서인지 출력하는 문제이다.
입력 배열은 후에 다시 사용되어 새로운 배열에 복사한 다음 정렬한다.
Map 을 사용하여 0부터 좌표의 순서를 저장한다. 중복되는 좌표값들이 있기 때문에 Map을 사용한다.
입력 값들을 Map에서 찾으면 그 순서를 알 수 있다.
소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int[] sorted = arr.clone();
Arrays.sort(sorted);
Map<Integer, Integer> map = new HashMap<>();
int idx = 0;
for (int n : sorted) {
if (!map.containsKey(n)) {
map.put(n, idx++);
}
}
StringBuilder sb = new StringBuilder();
for (int n : arr) {
sb.append(map.get(n)).append(" ");
}
System.out.println(sb);
}
}
반응형
'알고리즘(Algorithm) > 백준(Baekjoon)' 카테고리의 다른 글
[백준 Baekjoon] 7576번 토마토- JAVA (0) | 2021.12.06 |
---|---|
[백준 Baekjoon] 15711번 환상의 짝궁- JAVA (0) | 2021.12.05 |
[백준 Baekjoon] 1504번 특정한 최단 경로 - JAVA (0) | 2021.12.01 |
[백준 Baekjoon] 1238번 파티 - JAVA (0) | 2021.11.30 |
[백준 Baekjoon] 2616번 소형기관차 - JAVA (0) | 2021.11.30 |