본문 바로가기

Java/백준

[JAVA] 백준 18870 좌표 압축

18870번: 좌표 압축 (acmicpc.net)

 

18870번: 좌표 압축

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

www.acmicpc.net

 

풀이 과정 

 

- original 배열을 sorted배열로 clone

- sorted 배열을 arrays.sort로 오름차순 정렬 

- sorted 배열을 value로 추가 

- original 배열을 key로 하고 sorted 배열을 value로 하는 HashMap을 이용 

 

참고 블로그 

[백준] 18870번 : 좌표 압축 - JAVA [자바] (tistory.com)

 

[백준] 18870번 : 좌표 압축 - JAVA [자바]

https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다

st-lab.tistory.com

 

정답

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.HashMap;


public class Main {
    public static void main(String[] args) throws IOException, NumberFormatException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int num = Integer.parseInt(br.readLine());
        int original[] = new int[num];
        int sorted[] = new int[num];
        
        HashMap<Integer, Integer> map = new HashMap<>();
        
        String[] input = br.readLine().split(" ");
        for(int i=0; i<num; i++)
        {
        	original[i] = Integer.parseInt(input[i]);
        }
        
        sorted = original.clone();
        
        Arrays.sort(sorted);
        
        int count=0; 
        for(int i=0; i<num; i++)
        {
        	int key=sorted[i];
        	
        	if(!map.containsKey(key))
        	{
        		map.put(key, count++);
        	}
        }
        
        for(int i=0; i<num; i++)
        {
        	int key = original[i];
        	
            bw.write(map.get(key)+" ");
        }
        
        bw.flush();
        bw.close();
        
    }
}

 

'Java > 백준' 카테고리의 다른 글

[JAVA] 백준 10773 제로  (0) 2024.02.08
[JAVA] 백준 28278 스택 2  (0) 2024.02.08
[JAVA] 백준 10814 나이순 정렬  (0) 2024.02.07
[JAVA] 백준 1181 단어 정렬  (1) 2024.02.07
[JAVA] 백준 11650 좌표 정렬하기  (1) 2024.02.07