PLOD

[백준] 좌표 압축(18870) 본문

대외 활동 및 IT 지식/알고리즘 문제 풀이 정리

[백준] 좌표 압축(18870)

훌룽이 2026. 3. 9. 22:27

🔗 문제 링크

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

 

 

✅ 코드

import java.io.*;
import java.util.*;

public class 백준_18870 {
    static int n;
    static HashMap<Integer, Integer> map;
    static int[] arr;

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        n = Integer.parseInt(st.nextToken());
        arr = new int[n];
        map = new HashMap<>();

        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        int[] sortedArr = arr.clone();
        Arrays.sort(sortedArr);

        int rank = 0;
        for(int i = 0 ; i < n ; i++){
            if(!map.containsKey(sortedArr[i])){
                map.put(sortedArr[i], rank++);
            }
        }

        for(int i = 0; i < n ;i++){
            System.out.print(map.get(arr[i]) + " ");
        }

        br.close();
    }
}

💡 배운 점 & 느낀 점

1. int[] sortedArr = arr.clone() → Java는 Call By Value 이기 때문에 배열을 복사하려면 Clone 메서드 사용해야 함

Comments