Search

숫자 짝꿍

알고리즘
연습문제
플랫폼
프로그래머스
JCF
StringBuilder
HashMap
상태
해결
생성 일시
2023/12/28 07:14
최종 편집 일시
2024/01/11 10:24

문제 설명

해결과정

Solution.java

import java.util.*; class Solution { public String solution(String X, String Y) { StringBuilder answer = new StringBuilder(); Map<String, Integer> xstr = new HashMap<>(); Map<String, Integer> ystr = new HashMap<>(); xstr = strToMap(X); ystr = strToMap(Y); answer.append(makeStr(xstr, ystr)); if(answer.toString().equals("")) { answer.append("-1"); } else if (answer.toString().startsWith("0")) { answer.setLength(0); answer.append("0"); } return answer.toString(); } // cnt 숫자 만큼 문자열 출력 public String cntprint(String num, int cnt) { StringBuilder result = new StringBuilder(); for(int i = cnt; i > 0; i--) { result.append(num); } return result.toString(); } // 9~0까지 숫자를 하나씩 넣기 public String makeStr(Map<String, Integer> xstr, Map<String, Integer> ystr) { StringBuilder result = new StringBuilder(); for(int i = 9; i >= 0; i--) { String key = i + ""; if(xstr.containsKey(key) && ystr.containsKey(key)) { int cnt = 0; // if(key.equals("0")) { // result.append(0); // } else { cnt = xstr.get(key) < ystr.get(key) ? xstr.get(key) : ystr.get(key); result.append(cntprint(key, cnt)); // } } } return result.toString(); } // String 각 인덱스의 요소 의 개수를 Map에 저장 public Map<String, Integer> strToMap (String str) { Map<String, Integer> map = new HashMap<>(); for(String s : str.split("")){ if(map.containsKey(s)) { int count = map.get(s); map.put(s, count+1); } else { map.put(s, 1); } } return map; } }
Java
복사