변수 준비 : 두 수 X와 Y에 나타나는 각 숫자에 대한 빈도를 저장할 빈 배열을 만든다.
이 배열은 크기가 10이며 이는 0부터 9까지 각각의 숫자들이 배열 X, Y에 몇 번 나타나는지 저장하기 위함이다.
int[] x = new int[10];
int[] y = new int[10];
숫자 빈도수 계산 : X,Y 배열을 순회하며 각 숫자의 빈도수를 증가시킨다.
Character.getNumericValue() 메소드를 활용하여 각 문자를 숫자로 전환 후 해당 숫자 인덱스에 해당하는
배열의 요소값을 1씩 증가시킨다.
for(int i = 0; i < X.length(); i++) {
int index = Character.getNumericValue(X.charAt(i));
x[index]++;
}
for(int i = 0; i < Y.length(); i++) {
int index = Character.getNumericValue(Y.charAt(i));
y[index]++;
}
공통 숫자 찾기 및 정렬 : 두 배열을 순회하며 두 배열에 공통으로 나오는 숫자들을 찾는다.
숫자 i가 X와 Y배열에 공통으로 나타난다면 두 배열에서 i의 값을 비교 후 더 작은 값을 리스트에 추가한다.
그 후 내림차순으로 변경한다.
ArrayList<Integer> numbers = new ArrayList<>();
for(int i = 0; i < 10; i++) {
int minCount = Math.min(x[i], y[i]);
for(int j = 0; j < minCount; j++) {
numbers.add(i);
}
}
Collections.sort(numbers, Collections.reverseOrder());