백준 / 18870 / 좌표 압축 / java

맹민재·2023년 5월 3일
0

Java

목록 보기
5/32
package backjun.Esorting;

import java.util.Scanner;
import java.util.HashMap;
import java.util.Arrays;

public class 좌표압축 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int[] arr = new int[n];
        int[] sort = new int[n];

        for (int i=0; i<n; i++){
            arr[i] = sc.nextInt();
            sort[i] = arr[i];
        }
        sc.close();

        Arrays.sort(sort);
        HashMap<Integer, Integer> map = new HashMap<>();

        int idx = 0;
        for(int i:sort){
            if(!map.containsKey(i)){
                map.put(i, idx++);
            }
        }

        for(int i: arr)
            System.out.print(map.get(i) +" ");

    }
}

처음에 좌표 정보를 받을때 sort 시킬 배열에도 같이 저장한다.

sort 진행 한 후 HashMap을 통해 정렬된 수를 key 값으로 하고 1씩 증가시켜 해당 수가 몇 번째로 큰 수인지 저장시킨다.

최종적으로 처음 좌표를 저장한 arr를 순회하면서 HashMap의 Value 값을 출력함으로서 문제 해결


이 문제를 통해 알게된 Java 내장 함수 및 자료구조

Arrays.sort() --> 당연하게도 정렬 진행

Map이란?

  • Map은 리스트나 배열처럼 순차적으로(sequential) 해당 요소 값을 구하지 않고 key를 통해 value를 얻는다.

  • 맵(Map)의 가장 큰 특징이라면 key로 value를 얻어낸다는 점이다.

-특징
1. 요소의 저장 순서를 유지하지 않습니다.
2. key : 중복을 허용 X
--value : 중복은 허용 O

Map 사용하기
put 메소드를 통해 정보 저장 ex) -> map.put(i, idx++);
get 메소드를 통해 키에 해당하는 value 출력

containsKey 메소드를 통해 해당 키가 있는지 확인

remove 메소드를 통해 해당 키 값과 value 삭제

size 메소드를 통해 저장되어있는 키, value 쌍의 개수 확인

Map 클래스 종류

  • HashMap
    HashMap 은 Map Interface 를 Implements 한 클래스로서 중복을 허용하지 않는다.
    Map 의 특징인 Key 와 Value 의 쌍으로 이루어지며, key 또는 value 값으로써 null 을 허용한다.

  • TreeMap
    TreeMap 역시 중복을 허용하지 않으며, Key 와 Value 의 쌍으로 이루어져 있다.
    HashMap 과 다른 점은 SortedMap을 상속하였으며, Key 값들에 대한 정렬이 이루어진다는 점이다.

  • HashTableMap
    HashTable Map , key 또는 value 값으로써 null 을 허용하지 않는다. ( HashMap 과 차이점 )

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글