개발 낙서장

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

Algorithm/Programmers

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

권승준 2024. 1. 18. 10:05

숫자 짝꿍

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 방법

처음엔 단순 문자열이라고 생각해서 두 문자열을 정렬한 다음 짝이 맞는 문자를 StringBuilder에 추가해 결과를 출력해주었다.
근데 런타임 에러가 발생했는데 아마 두 문자열의 자릿수가 최대 300만 자릿수까지여서 메모리 초과?가 일어나는게 아닌가 싶다.

그래서 고민하다 다른 사람의 풀이를 참고해버렸다😥

너무 문자열에 꽂혀서 다른게 생각이 안났었는데 보자마자 바로 깨달았다.
그냥 숫자로 생각해서 배열에 넣고 개수를 카운트해주고 개수대로 출력해주면 되는 아주 간단한 문제였다.

소스 코드

더보기
class Solution {
    public String solution(String X, String Y) {
        String answer;

        StringBuilder sb = new StringBuilder();

        int[] x_int = new int[10];
        int[] y_int = new int[10];

        for(int i = 0; i < X.length(); i++) {
            x_int[Character.getNumericValue(X.charAt(i))] += 1;
        }

        for(int i = 0; i < Y.length(); i++) {
            y_int[Character.getNumericValue(Y.charAt(i))] += 1;
        }

        for(int i = 9; i >= 0; i--) {
            for(int j = 0; j < Math.min(x_int[i], y_int[i]); j++) {
                sb.append(Integer.toString(i));
            }
        }

        if(sb.length() == 0) {
            answer = "-1";
        }
        else if(sb.charAt(0) == '0') {
            answer = "0";
        }
        else {
            answer = sb.toString();
        }

        return answer;
    }
}
Comments