|
2 | 2 | import java.util.*; |
3 | 3 |
|
4 | 4 | public class Main { |
| 5 | + static final Character ONE = '1'; |
| 6 | + static final Character TWO = '2'; |
| 7 | + static final Character ZERO = '0'; |
5 | 8 |
|
6 | 9 | public static void main(String[] args) throws Exception{ |
7 | 10 | char[] origin = inputSetting(); |
8 | | - String[] halfRemove = removeZeroAndOneHalf(origin); |
9 | | - Arrays.sort(halfRemove); |
10 | | - |
11 | | - System.out.println(String.join("", halfRemove)); |
| 11 | + ArrayList<Character> list = removeZeroAndOneHalf(origin); |
| 12 | + System.out.println(makingNewStr(list)); |
12 | 13 | } |
| 14 | + |
| 15 | + private static ArrayList<Character> removeZeroAndOneHalf(char[] origin){ |
| 16 | + ArrayList<Character> list = new ArrayList<>(); |
13 | 17 |
|
14 | | - private static String[] removeZeroAndOneHalf(char[] origin){ |
15 | | - StringBuilder sb = new StringBuilder(); |
16 | | - HashMap<Character, Integer> map = new HashMap<>(); |
17 | | - |
| 18 | + int zero = 0; |
| 19 | + int one = 0; |
18 | 20 | for (int i = 0; i < origin.length; i++) { |
19 | | - if(map.containsKey(origin[i])) map.put(origin[i], map.get(origin[i]) + 1); |
20 | | - else map.put(origin[i], 1); |
| 21 | + if(origin[i] == ONE){ |
| 22 | + one++; |
| 23 | + } else { |
| 24 | + zero++; |
| 25 | + } |
| 26 | + list.add(origin[i]); |
| 27 | + } |
| 28 | + one /= 2; |
| 29 | + zero /= 2; |
| 30 | + for (int i = list.size() - 1; 0 <= i; i--) { |
| 31 | + if(0 < zero && list.get(i) == ZERO){ |
| 32 | + list.set(i, TWO); |
| 33 | + zero--; |
| 34 | + } |
21 | 35 | } |
22 | 36 |
|
23 | | - for(Map.Entry<Character, Integer> entry : map.entrySet()){ |
24 | | - if(entry.getKey() == '0' || entry.getKey() == '1') entry.setValue(entry.getValue() / 2); |
25 | | - |
26 | | - for(int i = 0; i < entry.getValue(); i++) { |
27 | | - sb.append(entry.getKey()); |
| 37 | + for (int i = 0; i < list.size(); i++) { |
| 38 | + if(0 < one && list.get(i) == ONE){ |
| 39 | + list.set(i, TWO); |
| 40 | + one--; |
28 | 41 | } |
29 | 42 | } |
30 | | - return sb.toString().split(""); |
| 43 | + return list; |
31 | 44 | } |
| 45 | + |
| 46 | + private static String makingNewStr(ArrayList<Character> list ){ |
| 47 | + StringBuilder sb = new StringBuilder(); |
32 | 48 |
|
| 49 | + for(int i = 0; i < list.size(); i++){ |
| 50 | + if(list.get(i) != TWO){ |
| 51 | + sb.append(list.get(i)); |
| 52 | + } |
| 53 | + } |
| 54 | + |
| 55 | + return sb.toString(); |
| 56 | + } |
| 57 | + |
33 | 58 | private static char[] inputSetting() throws Exception { |
34 | 59 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); |
35 | 60 | return br.readLine().toCharArray(); |
|
0 commit comments