프로그래머스 - 숫자 짝꿍
풀이
- 숫자의 범위: 0-9
문자열 x와 y에 있는 숫자의 개수를 저장할 길이가 10인 int배열 선언
- for문으로 순회하면서 각각 개수를 세어줌
- arrX와 arrY를 동시에 순회하면서 같은 수가 있으면 반환할 문자열 result에 저장
❗️큰 수를 반환하라고 했으므로 맨 뒤 인덱스부터 순회
- 반환할 문자열 result가 없으면 -1 반환,
result가 0이면 0 반환,
그렇지 않으면 result반환
코드
public class NumberPartner {
public String solution(String X, String Y) {
int[] arrX = new int[10];
int[] arrY = new int[10];
String result = "";
for (String x : X.split(""))
arrX[Integer.parseInt(x)] += 1;
for (String y : Y.split(""))
arrY[Integer.parseInt(y)] += 1;
for (int i = 9; i >= 0; i--) {
if (arrX[i] > 0 && arrY[i] > 0) {
int min = Math.min(arrX[i], arrY[i]);
result += String.valueOf(i).repeat(min);
arrX[i] -= min;
arrY[i] -= min;
}
}
if (result.length() == 0) return "-1";
else if (result.charAt(0) == '0') return "0";
return result;
}
public static void main(String[] args) {
NumberPartner numberPartner = new NumberPartner();
System.out.println(numberPartner.solution("100", "2345"));
System.out.println(numberPartner.solution("100", "203045"));
System.out.println(numberPartner.solution("100", "123450"));
System.out.println(numberPartner.solution("12321", "42531"));
System.out.println(numberPartner.solution("5525", "1255"));
}
}