숫자 짝꿍_Java(다시)

컴투루·2023년 3월 15일
0

프로그래머스 Lv.1

목록 보기
38/38

프로그래머스 Lv.1

🔥 숫자 짝꿍 🔥


👀 문제

두 정수 X,Y의 임의의 자리에서 공통으로 나타나는 정수 k들을 이용하여 만들 수 있는 가장 큰 수를 정수를 두 수의 짝꿍이라고 한다. 짝꿍이없으면 짝꿍은 -1이고 짝꿍이 0으로만 구성되어있다면 짝꿍은 0이다.

두 정수 X, Y가 주어졌을 때, X, Y의 짝꿍을 return하는 solution 함수를 완성해보자.


✔️ 조건

  • 3 ≤ X, Y의 길이(자릿수) ≤ 3,000,000입니다.
  • X, Y는 0으로 시작하지 않습니다.
  • X, Y의 짝꿍은 상당히 큰 정수일 수 있으므로, 문자열로 반환합니다.

👩‍💻 입력 & 🧙 출력

XYresult
1002345-1
1002030450
10012345010
1232142531321
55251255552

🙋‍♀️ 풀이

결론부터 말하자면 못 풀었다. 꽤 오래 붙잡고 있었는데 방향을 아예못잡아서 다른분들의 풀이를 참고했다.

class Solution {
    public String solution(String X, String Y) {
		1️⃣
        int[] cntX = new int[10];
        int[] cntY = new int[10];
        
        2️⃣
       for (String tmpX : X.split("")) cntX[Integer.parseInt(tmpX)]++;
       for (String tmpY : Y.split("")) cntY[Integer.parseInt(tmpY)]++;
        
        
        StringBuilder sb = new StringBuilder();
        3️⃣
        for(int i=9;i>=0;i--){
            while(cntX[i] >0 && cntY[i] >0){
                sb.append(i);
                cntX[i]--;
                cntY[i]--;
            }
        }
        String answer = "";
        4️⃣
        if("".equals(sb.toString())){
            answer = "-1";
        }else if("0".equals(sb.toString().substring(0,1))){
            answer = "0";
        }else {
            answer = sb.toString();
        }
        
        return answer;
    }
}
  1. 0~9까지의 숫자가 X과 Y에 몇개씩 존재하는지 알기위한 배열
  2. X와 Y를 한 문자씩 잘라서 반복문을 돌려주고 cntX와 cntY에 해당 숫자위치에 ++ 을 해줌
  3. 9부터 0까지 내려가면서 cntX와 cntY의 값이 0보다 큰 경우 sb에 append 해줌
  4. sb의 값이 "" 과 같다면 -1 0이라면 0 그외라면 sb.toString()이 정답이 된다.

👏 마무리

profile
맘 먹으면 못할 게 없지

0개의 댓글