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

이한솔·2023년 10월 20일
0

프로그래머스_레벨1

목록 보기
52/65
post-thumbnail

✨️ 문제 설명

: 두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다.

예를 들어, X = 3403이고 Y = 13203이라면, X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 3, 0, 3으로 만들 수 있는 가장 큰 정수인 330입니다. 다른 예시로 X = 5525이고 Y = 1255이면 X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 2, 5, 5로 만들 수 있는 가장 큰 정수인 552입니다(X에는 5가 3개, Y에는 5가 2개 나타나므로 남는 5 한 개는 짝 지을 수 없습니다.)
두 정수 X, Y가 주어졌을 때, X, Y의 짝꿍을 return하는 solution 함수를 완성해주세요.

 -> 자세한 내용 보러가기

🎲 자바 풀이

class Solution {
    public String solution(String X, String Y) {
        int[] xCnt = new int[10];
        int[] yCnt = new int[10];
        char[] xChars = X.toCharArray();
        char[] yChars = Y.toCharArray();
        for (char ch : xChars) {
            xCnt[ch - '0']++;
        }
        for (char ch : yChars) {
            yCnt[ch - '0']++;
        }
        StringBuilder result = new StringBuilder();
        for (int idx = 9; idx >= 0; idx--) {
            int cnt = Math.min(xCnt[idx], yCnt[idx]);
            for (int i = 0; i < cnt; i++) {
                result.append(idx);
            }
        }
        if (result.length() == 0) {
            return "-1";
        }
        if(result.charAt(0) == '0'){
            return "0";
        }
        return result.toString();
    }
}

풀이 설명

: 두 문자열에서 같은 값이 몇 개 있는지 알아내야하기 때문에, x와 y의 숫자가 몇개 있는지 저장할 배열을 선언하였다.
: 가장 큰 숫자를 구해야하기 때문에, 배열 끝 인덱스부터 처음 인덱스까지 반복문을 돌려서 StringBuilder 객체에 할당하였다.
profile
개인 공부용

0개의 댓글

Powered by GraphCDN, the GraphQL CDN