반응형
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 -92 3 0 3 1
6
1000 999 1000 999 1000 9991 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
'BaekJoon > Silver' 카테고리의 다른 글
[BOJ/JAVA] 백준 1735 : 분수 합 (자바) (0) | 2023.03.28 |
---|---|
[BOJ/JAVA] 백준 14425 : 문자열 집합 (자바) (0) | 2023.03.28 |
[BOJ/JAVA] 백준 2108 : 통계학 (자바) (0) | 2023.02.17 |
[BOJ/JAVA] 백준 11650 : 좌표 정렬하기 (자바) (0) | 2023.02.16 |
[BOJ/JAVA] 백준 11651 : 좌표 정렬하기 2 (자바) (0) | 2023.02.16 |
댓글