코딩블로그
프로그래머스 Lv.1 - 숫자 짝꿍 JAVA 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/131128
import java.util.*;
class Solution {
public String solution(String X, String Y) {
// X와 Y에서 각 숫자의 등장 횟수를 저장하는 맵 생성
Map<Character, Integer> freqX = new HashMap<>();
Map<Character, Integer> freqY = new HashMap<>();
// X에서 각 숫자의 등장 횟수 계산
for (char c : X.toCharArray()) {
freqX.put(c, freqX.getOrDefault(c, 0) + 1);
}
// Y에서 각 숫자의 등장 횟수 계산
for (char c : Y.toCharArray()) {
freqY.put(c, freqY.getOrDefault(c, 0) + 1);
}
StringBuilder sb = new StringBuilder();
// X와 Y에서 공통으로 등장하는 숫자들을 찾아서 문자열 생성
for (char c = '9'; c >= '0'; c--) {
int count = Math.min(freqX.getOrDefault(c, 0), freqY.getOrDefault(c, 0));
for (int i = 0; i < count; i++) {
sb.append(c);
}
}
// 공통으로 등장하는 숫자가 없는 경우
if (sb.length() == 0) {
return "-1";
} else if (sb.toString().startsWith("0")) {
return "0";
}
return sb.toString();
}
}
Map 자료구조에 대해 배울 수 있었던 문제다.
getOrDefault(key, 0)를 쓰면 상당히 많은 문제를 풀어나갈 수 있을 것 같다
728x90