티스토리 뷰
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
풀이
1) 원본 배열, 정렬된 배열을 생성
2) 정렬된 배열 탐색. 한번도 들어오지 않은 값이면 맵에 넣는다 value는 넣을때마다 1씩 증가
3) 원본 배열 탐색. 맵으로 BufferedWriter에 담음
4) 출력
주의사항
1) x
package com.baekJoon;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class BJ_S2_18870_좌표압축 {
static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter output = new BufferedWriter(new OutputStreamWriter(System.out));
static StringTokenizer tokens;
static int N;
static long arr[], copy[];
static Map<Long, Integer> map = new HashMap<>();
public static void main(String[] args) throws NumberFormatException, IOException {
input = new BufferedReader(new StringReader(src));
N = Integer.parseInt(input.readLine());
arr = new long [N];
copy = new long [N];
tokens = new StringTokenizer(input.readLine());
for(int i=0; i<N; i++) {
long num = Integer.parseInt(tokens.nextToken());
arr[i] = num;
copy[i] = num;
}
Arrays.sort(copy);
int cnt = 0;
for(int i=0; i<N; i++) {
if(map.get(copy[i]) == null) {
map.put(copy[i], cnt++);
}
}
for(int i=0; i<N; i++) {
output.append(map.get(arr[i])+" ");
}
output.close();
}
static String src =
"6\r\n" +
"1000 999 1000 999 1000 999";
}
풀이
정렬과 Map 자료구조만 알면 쉽게 풀 수 있는 문제. 특별히 배운점은 없다.
'Algorithm' 카테고리의 다른 글
[백준] B1 2456 나는 학급회장이다 (java) (0) | 2021.01.17 |
---|---|
[백준] G5 13975 파일 합치기 3 (java) (0) | 2021.01.17 |
[백준] G5 16234 인구 이동 (java) (0) | 2021.01.17 |
[백준] B1 10798 세로 읽기 (java) (0) | 2021.01.17 |
[백준] G5 14395 4연산 (java) (0) | 2021.01.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- PriorityQueue
- 자바
- SWEA
- 백준
- g4
- 리액트 네이티브
- DFS
- 구현
- map
- 그리디
- 리액트
- S3
- 알고리즘
- S2
- 현꾸라지
- 시뮬레이션
- G5
- 코딩새내기
- react native
- react
- 우선순위큐
- Spring Boot
- laugh4mile
- 백트래킹
- 객체지향
- BFS
- 다익스트라
- Spring
- java
- 문자열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함