숫자 짝꿍

채종윤·2023년 8월 21일
0

📔 문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/131128


📝 문제 풀이

시간초과때문에 이중반복문은 사용X

1. 각 문자열이 포함하는 숫자 카운팅

java x[Integer.parseInt(i)]++;
배열에 해당하는 숫자가 있으면 인덱스값의 +1

2.x배열과 y배열에 공통으로 속하면 sb에 더해주고 인덱스값이 줄어들 때 까지 반복

 for(int i =9; i>=0; i--){
            while(x[i]>=1 && y[i]>=1){
                sb.append(i);
                x[i]--;
                y[i]--;
            }
        }

3. 각각의 조건에 맞춰 값 출력

if("0".equals(sb.toString().substring(0,1))){
             return "0";
         }

값이 "000"이면 0만 출력되야 하기때문에 substring메소드를 사용해서 첫번째만 추출한 후 0이면 return "0"


💡 내 코드

import java.util.*;
class Solution {
    public String solution(String X, String Y) {
        StringBuilder sb = new StringBuilder();
        
        int[] x = new int[10];
        int[] y = new int[10];
        
        for(String i : X.split("")){
            x[Integer.parseInt(i)]++;
        }
        for(String i : Y.split("")){
            y[Integer.parseInt(i)]++;
        }
        
        for(int i =9; i>=0; i--){
            while(x[i]>=1 && y[i]>=1){
                sb.append(i);
                x[i]--;
                y[i]--;
            }
        }
        
         if((sb.toString()).equals("")){
             return "-1";
         }   
         if("0".equals(sb.toString().substring(0,1))){
             return "0";
         }
         return sb.toString();
            
        }
       
    }
profile
안녕하세요. 백앤드 개발자를 목표로 하고 있습니다!

0개의 댓글