WonYong-Jang / algorithm

0 stars 0 forks source link

Comparator Sorting #11

Open WonYong-Jang opened 6 years ago

WonYong-Jang commented 6 years ago
2018-07-14 2 04 34

백준 10825 국영수 문제 중 일부 소스

WonYong-Jang commented 4 years ago

leetcode 1029 Two City Schedule

메소드 안에서 선언 후 사용

int[][] costs ==> 2차원 배열 sorting 
===> ( costs[i][0] 과 costs[i][1] 과의 절대값 차이를 기준으로 내림차순! )

Comparator<int[]> mySort = new Comparator<int[]>() {

            public int compare(int[] a, int[] b) {
                return Math.abs(b[0]-b[1]) - Math.abs(a[0]-a[1]);
            }
        };
Arrays.sort(costs, mySort);
List<Integer> list = new ArrayList<>(map.keySet());

        Comparator<Integer> mySort = new Comparator<Integer>() {
            @Override
            public int compare(Integer a, Integer b) {
                return map.get(b) - map.get(a);
            }  
        };
Collections.sort(list, mySort);
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet());
        Collections.sort(list, new mySort());

public class mySort implements Comparator<Map.Entry<Integer, Integer>> {
        public int compare(Map.Entry<Integer, Integer> a, Map.Entry<Integer, Integer> b) {

            if(a.getValue() == b.getValue()) return a.getKey() - b.getKey();
            else return a.getValue() - b.getValue();
        }
    }

람다 표현

Arrays.sort(costs, (a, b) -> {
            return Math.abs(b[0]-b[1]) - Math.abs(a[0]-a[1]);
        });

leetcode 406 Queue reconstruction by height

ArrayList<int[]> arr = new ArrayList<>(); ==> arr.add(index, value); // 해당 index에 value 삽입하는데 값이 있다면 전부 오른쪽으로 밀고 삽입!!

class Solution {
    public int[][] reconstructQueue(int[][] people) {

        Arrays.sort(people, (a,b) -> {
            return a[0] == b[0] ? a[1] - b[1] : b[0] - a[0];
        });

        ArrayList<int[]> arr = new ArrayList<>();

        for(int[] cur : people)
        {
            arr.add(cur[1], cur); // 주의
        }

        return arr.toArray(new int[people.length][2]);
    }
}
WonYong-Jang commented 4 years ago

179. Largest Number

Comparator 변형 !

 public class mySort implements Comparator<String> {
        public int compare(String a, String b) {
            String ab = a + b;
            String ba = b + a;
            return ba.compareTo(ab);
        }
    }