프로그래머스 - 숫자 짝꿍

youngkyu MIn·2023년 12월 4일

문제링크 - 프로그래머스 - 숫자 짝꿍

import java.util.*;

class Solution {
    public String solution(String X, String Y) {
        Map<Character, Integer> map = new HashMap<>();
        for (char c : Y.toCharArray()) {
            map.put(c, map.getOrDefault(c, 0) + 1);
        }

        StringBuilder sb = new StringBuilder();
        for (char c : X.toCharArray()) {
            if (map.containsKey(c) && map.get(c) > 0) {
                sb.append(c);
                map.put(c, map.get(c) - 1);
            }
        }

        if (sb.length() == 0) return "-1";

        if (sb.toString().matches("0+")) return "0";

        char[] chars = sb.toString().toCharArray();
        Arrays.sort(chars);
        return new StringBuilder(new String(chars)).reverse().toString();
    }
}

처음엔 이중반복으로 했는데 예상대로 시간초과로 실패했다.

시간을 줄일 아이디어는 Y 의 값들과 그 수를 Map 으로 만들고

X를 순회하며 Map 에 해당 값이 있고 그 수가 1 이상이면 StringBuilder 에 append 하고 Map 의 value 는 -1 해주는 방식으로 만들었다.

통과했다 히히

profile
한 줄 소개

0개의 댓글