PriorityQueue는 String이든 int든 특별히 compare를 하지 않으면 작은 숫자부터 poll을 해서 없에줄수 있다. 이를 응용한 방법. 



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
29
String number = "4177252841"
        int k = 4;
 
        String answer = "";
        Queue<String> q = new PriorityQueue<>();
        ArrayList<String> alist = new ArrayList<>();
        //Queue translate
        for (int i = 0; i < number.length(); i++) {
            q.offer(number.substring(i, i + 1));
            alist.add(number.substring(i, i + 1));
        }
        System.out.println(q);
 
        //작은수 빼주기
        int count = 0;
        while (!q.isEmpty()){
            String temp = q.poll();
            for (int i = 0; i < alist.size(); i++) {
                if (count == k) break;
                System.out.println(temp +" / " + count +" / " + alist.get(i));
                if (temp.equals(alist.get(i))) {
                    alist.remove(i);
                    count++;
                }
 
            }
        }
 
        System.out.println(alist);
cs


블로그 이미지

Stratos

Stratosphere Stream