본문 바로가기

OJ

[BOJ] 18870 좌표 압축 (JAVA)

https://www.acmicpc.net/problem/18870

 

18870번: 좌표 압축

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌

www.acmicpc.net

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
import java.util.stream.Collectors;

public class Main {
	
    public static void main(String[] args) throws Exception {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int N = Integer.parseInt(br.readLine());
        List<Integer> list = new ArrayList<>();
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        for (int i = 0; i < N; i++) {
            list.add(Integer.parseInt(st.nextToken()));
        }

        List<Integer> distinctList = list.stream().distinct().collect(Collectors.toList());
        Collections.sort(distinctList);

        HashMap<Integer, Integer> map = new HashMap<>();
        int cnt = 0;
        for (int i = 0; i < distinctList.size(); i++) {
            map.put(distinctList.get(i), cnt++);
        }

        for (int i = 0; i < N; i++) {
            sb.append(map.get(list.get(i))).append(" ");
        }
        System.out.print(sb);

    }
	
}

'OJ' 카테고리의 다른 글

[BOJ] 9375 패션왕 신해빈 (JAVA)  (0) 2023.08.06
[BOJ] 1107 리모컨 (JAVA)  (0) 2023.08.05
[BOJ] 2630 색종이 만들기 (JAVA)  (0) 2023.08.03
[BOJ] 2869 달팽이는 올라가고 싶다 (JAVA)  (0) 2023.08.02
[BOJ] 2231 분해합 (JAVA)  (0) 2023.08.01