알고리즘/문제 [BOJ/백준 - 18870] 좌표 압축 - 문제 출처: https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters Show hidden characters public class BOJ_18870 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); HashMap<Integer, Integer> hm = new HashMap<>(); // int size = Integer.parseInt(br.readLine()); int[] arr = new int[size]; int[] target = new int[size]; StringTokenizer st = new StringTokenizer(br.readLine()); for(int i=0; i<size; i++){ int v = Integer.parseInt(st.nextToken());; arr[i] = v; target[i] = v; } Arrays.sort(arr); int dupCnt = 0; int before = 0; for(int i=0; i<arr.length; i++){ if(i!=0 && before == arr[i]){ dupCnt++; } before = arr[i]; hm.put(arr[i], i-dupCnt); } for(int i=0; i<size; i++){ sb.append(hm.get(target[i])).append(" "); } System.out.print(sb); } } view raw BOJ_18870.java hosted with ❤ by GitHub 난 일단 문제 이해가 아예 안되서 문제가 뭘 뜻하는지만 찾아보고 풀어보았다 나처럼 문제의 뜻을 몰랐다면 설명을 듣고 다시 풀어보자 각각의 입력받은 좌표값을 X라고 했을때 X보다 앞에있는 좌표가 몇 개 있냐? (값이 작은 좌표가 몇 개 있냐?) 이런 문제였다. 최대한 간단하게 쓴다고 했는데 잘 이해가 안된다면 미안하고 다른사람 설명을 찾아보셔야겠다 (백준 지문도 이해 못할만큼 국어 못함 당연히 설명도 좀 부족할 수도 있음) 1. 좌표라고 했으니 중복값을 지워야 하므로 입력값을 받으면서 해시맵에 해당 값을 넣어줌 2. 정렬 3. 내 앞의 원소의 갯수를 셈 4. 내 앞의 수와 같은지를 검사하고 같으면 중복을 체크하는 변수를 1 올려줌 5. 원소의 갯수 - 중복된 값을 하면 내 앞의 좌표 갯수가 나옴 예시로 된 데이터로 함 봐보자 일단은 이런식으로 그림을 그려보고 코드를 작성했고 최종적으로 계산할때마다 해시맵의 값을 갱신하는게 맘에 안들긴 했지만 일단 풀긴 푸럿당 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기Time to lazy Contents 당신이 좋아할만한 콘텐츠 [BOJ/백준 - 2869] 달팽이는 올라가고 싶다 2021.09.30 [BOJ/백준 - 1463] 1로 만들기 2021.09.27 [BOJ/백준 - 10989] 수 정렬하기 3 2021.09.06 [BOJ/백준 - 2580] 스도쿠 2021.09.05 댓글 0 + 이전 댓글 더보기