[Silver II] 좌표 압축 - 18870

2024. 10. 23. 16:16·코딩테스트/백준

[Silver II] 좌표 압축 - 18870

문제 링크

성능 요약

메모리: 366240 KB, 시간: 2024 ms

분류

값 / 좌표 압축, 정렬

제출 일자

2024년 10월 23일 15:24:55

문제 설명

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.

Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다.

X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.

입력

첫째 줄에 N이 주어진다.

둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다.

출력

첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다.

 

예제 입력

5
2 4 -10 4 -9

 

예제 출력

2 3 0 3 1

좌표의 최솟값을 0으로 설정하고,

나머지 숫자들은 최솟값과의 차이를 계산해 1씩 증가시켜

좌표를 압축할 수 있다.

 

 

1. 주어진 배열을 오름차순으로 정렬한다.

2. Map에 기존 값과 압축된 좌표를 입력한다.

3. 기존 배열을 순회하며 압축된 좌표를 출력한다.

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

class Main {
    public static void main(String[] args) throws IOException {
        StringBuilder sb = new StringBuilder();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());
        List<Integer> list = new ArrayList<>();
        for(int i=0; i<N; i++) {
            list.add(Integer.parseInt(st.nextToken()));
        }

        int[] sortedList = list.stream().distinct().sorted().mapToInt(i -> i).toArray();
        Map<Integer, Integer> map = new HashMap<>();
        int num = 0;

        for (int i : sortedList) {
            map.put(i, num);
            num++;
        }

        for(int i : list){
            sb.append(map.get(i));
            sb.append(" ");
        }

        System.out.println(sb);
        br.close();
    }
}

'코딩테스트 > 백준' 카테고리의 다른 글

[Silver I] 쉬운 최단거리 - 14940  (1) 2024.10.23
[Silver I] 절댓값 힙 - 11286  (1) 2024.10.23
[Gold V] AC - 5430  (1) 2024.10.20
[Silver III] 1로 만들기 - 1463  (0) 2024.10.18
[Gold V] 토마토 - 7576  (1) 2024.10.17
'코딩테스트/백준' 카테고리의 다른 글
  • [Silver I] 쉬운 최단거리 - 14940
  • [Silver I] 절댓값 힙 - 11286
  • [Gold V] AC - 5430
  • [Silver III] 1로 만들기 - 1463
mint723dev
mint723dev
mint723dev 님의 블로그 입니다.
  • mint723dev
    mint723dev 님의 블로그
    mint723dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (89) N
      • Computer Science (16)
        • Computer Architecture (0)
        • Data Structure (2)
        • Database (4)
        • Network (4)
        • Operating System (6)
        • Software Engineering (0)
      • Java (6)
      • 자료 구조 (0)
      • 코딩테스트 (63) N
        • LeetCode (1)
        • 프로그래머스 (29)
        • 백준 (33) N
      • Spring (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JVM
    BFS
    DFS
    deque
    티스토리챌린지
    DP
    탐욕법
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
mint723dev
[Silver II] 좌표 압축 - 18870
상단으로

티스토리툴바