Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

코딩블로그

프로그래머스 Lv.1 - 숫자 짝꿍 JAVA 본문

카테고리 없음

프로그래머스 Lv.1 - 숫자 짝꿍 JAVA

_hanbxx_ 2024. 3. 20. 20:53
728x90

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

 

프로그래머스

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

programmers.co.kr

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