백준 - 좌표 압축 ( 18870번, JAVA )

changi123·2024년 12월 10일
0
post-thumbnail

sort ( https://www.acmicpc.net/problem/18870 )

풀이

  • 일반 배열, 정렬된 배열을 통해 hashMap에 순서를 저장하고 일반 배열에 값에 맞는 value를 찾으면 된다. 중요한점은 val가 아닐때 i로 주면 i는 순차적으로 증가하기 때문에 꼭 넣고 난 후 다음 순번을 저장할 cnt를 지정해줘야한다는것 !
package problem_solving.sort;

import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Scanner;

public class BaekJoon_18870 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = Integer.parseInt(sc.next());
		
		Integer [] arr = new Integer[n];
		Integer [] sortArr = new Integer[n];
		for(int i = 0 ; i <arr.length; i++) {
			int num = Integer.parseInt(sc.next());
			arr[i] = num;
			sortArr[i] = num;
		}
		
		Arrays.sort(sortArr);
		int cnt = 0 ; 
		HashMap<Integer,Integer> hm = new HashMap<>();
		for(int i= 0 ; i < arr.length;i++) {
			if( hm.containsKey(sortArr[i] )) {
				int val = hm.get(sortArr[i]);
				int size = hm.size();
				hm.put(sortArr[i], val);
				if( size != hm.size()) {
					cnt++;
				}
			} else {				
				hm.put(sortArr[i], cnt);
				cnt++;
			}
		}
		StringBuilder sb = new StringBuilder();
		for(int i =0 ;  i< arr.length; i++ ) {
			int val = hm.get(arr[i]) ;
			sb.append(val+" ");
		}

		System.out.println(sb.toString());
		
		
	}

}

profile
개발자 홍찬기 꾸준한 사람이 되자

0개의 댓글

관련 채용 정보