🍒 초보자 μΉœν™” κ°€μ΄λ“œ 'Partitioning Into Minimum Number Of Deci-Binary Numbers' - 문제 1689 (C++, Python, JavaScript)

λ°œν–‰: (2026λ…„ 3μ›” 1일 μ˜€μ „ 11:52 GMT+9)
4 λΆ„ μ†Œμš”
원문: Dev.to

Source: Dev.to

Cover image for 🍒 Beginner-Friendly Guide 'Partitioning Into Minimum Number Of Deci-Binary Numbers' - Problem 1689

Problem Summary

μ£Όμ–΄μ§„ 것:
맀우 큰 μ–‘μ˜ μ •μˆ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄ n.

λͺ©ν‘œ:
n을 ν•©μœΌλ‘œ λ§Œλ“€ 수 μžˆλŠ” λ°μ‹œ-λ°”μ΄λ„ˆλ¦¬ 숫자(숫자 0κ³Ό 1만으둜 이루어진 수)의 μ΅œμ†Œ 개수λ₯Ό μ°ΎλŠ”λ‹€.

Intuition

λ§μ…ˆμ€ μžλ¦¬λ§ˆλ‹€ 이루어진닀. λ°μ‹œ-λ°”μ΄λ„ˆλ¦¬ μˆ˜λŠ” 각 μ‹­μ§„ μžλ¦¬μ—μ„œ 0 λ˜λŠ” 1만 κΈ°μ—¬ν•  수 μžˆλ‹€.

  • 일의 μžλ¦¬μ—μ„œ 7μ΄λΌλŠ” μˆ«μžκ°€ μžˆλ‹€λ©΄, 7을 λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ” μ΅œμ†Œ 7개의 λ°μ‹œ-λ°”μ΄λ„ˆλ¦¬ μˆ˜κ°€ ν•„μš”ν•˜λ‹€ (1을 7번 더해야 함).
  • λ‹€λ₯Έ 자리의 숫자(2λ‚˜ 3 λ“±)도 같은 μ›λ¦¬λ‘œ, ν•΄λ‹Ή μžλ¦¬μ—μ„œ 0을 μ‚¬μš©ν•˜λŠ” μˆ˜λ“€μ„ 포함해 λ§Œμ‘±μ‹œν‚¬ 수 μžˆλ‹€.

λ”°λΌμ„œ μ œν•œ μš”μ†ŒλŠ” λ¬Έμžμ—΄μ— μžˆλŠ” κ°€μž₯ 큰 μˆ«μžκ°€ λœλ‹€.
λ¬Έμžμ—΄μ— 9κ°€ 있으면 9개의 λ°μ‹œ-λ°”μ΄λ„ˆλ¦¬ μˆ˜κ°€ ν•„μš”ν•˜κ³ , κ°€μž₯ 큰 μˆ«μžκ°€ 3이면 3개의 μˆ˜κ°€ ν•„μš”ν•˜λ‹€.

Walkthrough: Understanding the Examples

Example 1: n = 32

  • 자리수: 3(μ‹­μ˜ 자리)와 2(일의 자리).
  • μ‹­μ˜ μžλ¦¬μ—μ„œ μ΅œμ†Œ μ„Έ 개의 1이 ν•„μš” β†’ 10 + 10 + 10.
  • 일의 μžλ¦¬μ—μ„œ 두 개의 1이 ν•„μš” β†’ 11 + 11 + 10 = 32.
  • μ‚¬μš©λœ 총 수: 3(κ°€μž₯ 큰 자리수).

Example 2: n = 82734

  • 자리수: 8, 2, 7, 3, 4.
  • κ°€μž₯ 큰 μˆ«μžλŠ” 8.
  • 8개의 별도 μˆ˜κ°€ ν•„μš”ν•˜κ³ , λ‹€λ₯Έ μžλ¦¬λ“€μ€ ≀ 8β€―κ°œμ˜ 1을 μ‚¬μš©ν•΄ λ§Œλ“€ 수 μžˆλ‹€.
  • κ²°κ³Ό: 8.

Code Blocks

C++

class Solution {
public:
    int minPartitions(string n) {
        int maxi = 0;
        for (char c : n) {
            // Convert character to integer and track the maximum
            if (maxi  int:
        # The result is simply the maximum digit in the string
        # We convert the characters to integers to find the max
        return int(max(n))

JavaScript

/**
 * @param {string} n
 * @return {number}
 */
var minPartitions = function(n) {
    let maxi = 0;
    for (let i = 0; i  maxi) {
            maxi = digit;
        }
        // Optimization: if we find a 9, we can stop early
        if (maxi === 9) return 9;
    }
    return maxi;
};

Key Takeaways

  • Greedy Logic: 데이터 μ§‘ν•©μ—μ„œ κ°€μž₯ 큰 값이 전체 집합에 ν•„μš”ν•œ 쑰건을 κ²°μ •ν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€.
  • String Manipulation: ν‘œμ€€ μ •μˆ˜ λ²”μœ„(10^{100000})λ₯Ό μ΄ˆκ³Όν•˜λŠ” κ±°λŒ€ν•œ μˆ«μžλŠ” λ¬Έμžμ—΄λ‘œ 닀룬닀.
  • Complexity: ν•΄κ²° 방법은 O(n) μ‹œκ°„(μ—¬κΈ°μ„œ n은 λ¬Έμžμ—΄ 길이)κ³Ό O(1) μΆ”κ°€ 곡간을 μ‚¬μš©ν•œλ‹€.

Final Thoughts

이 λ¬Έμ œλŠ” 기술 λ©΄μ ‘μ—μ„œ β€œμ•„ν•˜!” μˆœκ°„μ„ μ œκ³΅ν•œλ‹€. 동적 ν”„λ‘œκ·Έλž˜λ°μ΄λ‚˜ λΆ„ν•  문제처럼 보일 수 μžˆμ§€λ§Œ, μ‹€μ œλ‘œλŠ” κ΄€μ°°λ ₯ ν…ŒμŠ€νŠΈμ΄λ‹€. μ‹€μ œ μ†Œν”„νŠΈμ›¨μ–΄ μ—”μ§€λ‹ˆμ–΄λ§μ—μ„œλŠ” μžμ› ν• λ‹Ήκ³Ό μœ μ‚¬ν•œλ°, 병렬 μž‘μ—… 전체 μ‹€ν–‰ μ‹œκ°„μ€ κ°€μž₯ 였래 κ±Έλ¦¬λŠ” 단일 μž‘μ—…μ— μ˜ν•΄ μ œν•œλ˜λ“―μ΄, 우리의 합도 κ°€μž₯ 큰 μžλ¦¬μˆ˜μ— μ˜ν•΄ μ œν•œλœλ‹€.

0 쑰회
Back to Blog

κ΄€λ ¨ κΈ€

더 보기 Β»

그룹별 λ°°μ—΄ λ’€μ§‘κΈ°

문제 μ„€λͺ…: μ£Όμ–΄μ§„ 크기 k의 그룹으둜 배열을 λ’€μ§‘λŠ”λ‹€. 배열은 길이 k인 연속적인 청크(μœˆλ„μš°)둜 λ‚˜λ‰˜λ©°, 각 μ²­ν¬λŠ” λ’€μ§‘νžŒλ‹€.

πŸš€ LeetCode Top 150 β€” μ§„ν–‰ 둜그 #1

μ§„ν–‰ 상황: 데이터 ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜ κΈ°λ°˜μ„ κ°•ν™”ν•˜κΈ° μœ„ν•΄ Top 150 LeetCode 여정을 κ³΅μ‹μ μœΌλ‘œ μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. μ§„ν–‰λ₯ : 150문제 쀑 3문제 ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€. R...

β€˜skill-check’ JS ν€΄μ¦ˆ

질문 1: Type coercion λ‹€μŒ μ½”λ“œλŠ” μ½˜μ†”μ— 무엇을 좜λ ₯ν•©λ‹ˆκΉŒ? javascript console.log0 == '0'; console.log0 === '0'; λ‹΅λ³€: true, then false

ꡬ리지 μ•Šμ€ μ‹œλ§¨ν‹± λ¬΄νš¨ν™”

캐싱 문제 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ–΄λŠ 정도 κΈ°κ°„ λ™μ•ˆ μž‘μ—…ν•΄ λ³Έ μ‚¬λžŒμ΄λΌλ©΄ 캐싱에 λŒ€ν•œ 상황을 잘 μ•Œ κ²ƒμž…λ‹ˆλ‹€. μΊμ‹œλ₯Ό μΆ”κ°€ν•˜λ©΄ λͺ¨λ“  것이 빨라지고, κ·Έ λ‹€μŒμ— λˆ„κ΅°κ°€β€¦