18870 좌표압축(정렬) Java
2021. 9. 17. 17:16ㆍ알고리즘/백준
반응형
문제
수직선 위에 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을 공백 한 칸으로 구분해서 출력한다.
제한
- 1 ≤ N ≤ 1,000,000
- -109 ≤ Xi ≤ 109
출처: <https://www.acmicpc.net/problem/18870>
##문제이해##
처음에는 문제를 이해못했었다…
결국 답답해서 찾아봤더니
자기좌표X보다 낮은X의 갯수를 체크하는것이였다!!
그리고..같은 숫자가 존재할경우 1번만 체크
##문제풀이코드##
결과값은 동일하게 나오는것 같은데 시간초과가..떠버렸다 ㅠㅠ 나중에 다시봐야지
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class boj_18870 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
List<Integer> list = new ArrayList<>();
List<Integer> resultList = new ArrayList<>();
for(int i=0; i<N; i++) {
list.add(sc.nextInt());
}
//비교하는데 동일한 숫자가 있는경우 한번만...
for(int i=0; i<N; i++) {
int count=0;
Map<Integer,Integer> compareMap = new HashMap<>();
for(int j=0; j<N; j++) {
//크기비교 후 count체크
if(list.get(i) > list.get(j)) {
//동일한 값이 들어갔는지 Map으로 체크
if(compareMap.get(list.get(j))==null) {
count++;
compareMap.put(list.get(j), list.get(j));
}
}
}
resultList.add(count);
}
StringBuffer sb = new StringBuffer();
for(int i : resultList) {
sb.append(i+" ");
}
System.out.println(sb);
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
2309문제 일곱 난쟁이(브루트포스) Java(DFS) (0) | 2021.09.18 |
---|---|
9012문제 괄호(스택) Java (0) | 2021.09.18 |
10814문제 나이순 정렬(정렬) Java (0) | 2021.09.17 |
1181문제 단어정렬(정렬) Java (0) | 2021.09.17 |
11651문제 좌표 정렬하기2(정렬) Java (0) | 2021.09.17 |