[프로그래머스] 숫자 짝꿍(Java)

수경·2022년 12월 12일
0

problem solving

목록 보기
77/174

프로그래머스 - 숫자 짝꿍

풀이

  1. 숫자의 범위: 0-9
    문자열 x와 y에 있는 숫자의 개수를 저장할 길이가 10인 int배열 선언
  2. for문으로 순회하면서 각각 개수를 세어줌
  3. arrX와 arrY를 동시에 순회하면서 같은 수가 있으면 반환할 문자열 result에 저장
    ❗️큰 수를 반환하라고 했으므로 맨 뒤 인덱스부터 순회
  4. 반환할 문자열 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"));  // -1
		System.out.println(numberPartner.solution("100", "203045"));  // 0
		System.out.println(numberPartner.solution("100", "123450"));  // 10
		System.out.println(numberPartner.solution("12321", "42531"));  // 321
		System.out.println(numberPartner.solution("5525", "1255"));  // 552
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글