본문 바로가기
BaekJoon/Silver

[BOJ/JAVA] 백준 18870 : 좌표 압축 (자바)

by HoonSikE 2023. 2. 18.
반응형
SMALL
문제 정보
  문제명   - 좌표 압축
  난이도   - 실버 II
문제 번호 - 18870번

문제 링크

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

 

18870번: 좌표 압축

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

www.acmicpc.net


문제
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.
Xi를 좌표 압축한 결과 X'i의 값은 Xi > 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
6
1000 999 1000 999 1000 999


1 0 1 0 1 0

알고리즘 분류
● 정렬
● 값 / 좌표 압축

소스코드
package Lv2_Silver;

import java.io.*;
import java.util.*;
/**
 * @author HanHoon
 * @category 정렬, 값 / 좌표 압축
 * https://www.acmicpc.net/problem/18870
 */
public class BOJ_S2_18870_좌표_압축 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = null;
        StringBuilder str = new StringBuilder();

        // N개의 좌표
        int N = Integer.parseInt(br.readLine());

        // 원본 배열
        int[] origin = new int[N];
        // 정렬 할 배열
        int[] sorted = new int[N];
        HashMap<Integer, Integer> rankMap = new HashMap<>();

        st = new StringTokenizer(br.readLine());

        for (int n = 0; n < N; n++)
            sorted[n] = origin[n] = Integer.parseInt(st.nextToken());

        Arrays.sort(sorted);

        // 정렬 된 배열을 순회하면서 Map에 넣어준다.
        int rank = 0;
        for(int n : sorted) {
            /**
             * 같은 원소는 순위가 동일하므로 중복되지 않을때만 순위를 매겨준다.
             */
            if(!rankMap.containsKey(n)){
                rankMap.put(n, rank);
                rank++;
            }
        }

        for(int key : origin)
            str.append(rankMap.get(key)).append(" ");

        System.out.print(str);
        br.close();
    }
}

 


BaekJoon List
 

BaekJoon List

BOJ Start!! ● [BOJ] 백준 회원가입, 시작하는 법 ● [BOJ] 등급(티어) 및 Solved.AC 적용 ● [BOJ/JAVA] 백준 소스코드 제출 시 유의사항(자바) Bronze ● Bronze V  - ● Bronze IV  - ● Bronze III  -..

han-hoon.tistory.com


  

기회는 준비된 자에게 찾아온다.

 


 

반응형
LIST

댓글