본문 바로가기
자료구조 & 알고리즘/문제 풀이 (프로그래머스)

큰 수 만들기

by 정구정구 2026. 6. 30.

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42883

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

문제 풀이

 왼 쪽부터 오른 쪽 숫자들과 비교하면서 작은 수를 지워가면서 가장 큰 수를 만들어주면 된다. 사실 Stack을 생각 못 하고, 더 어렵고 지져분하게 코드를 하다가 힌트를 보고 stack으로 구현했다.

 

 

작성한 코드 (정답)

import java.util.*;

class Solution {
    public String solution(String number, int k) {
    
        String[] numberString = number.split("");
        Deque<String> stack = new ArrayDeque<>();

        for (int i = 0; i < numberString.length; i++) {

            while (!stack.isEmpty()
                    && Integer.parseInt(numberString[i]) > Integer.parseInt(stack.peek())
                    && k-- > 0
            ) {
                stack.pop();
            }
            stack.push(numberString[i]);
        }

        StringBuilder result = new StringBuilder();
        while (!stack.isEmpty()) {
            result.append(stack.pop());
        }

        if (k > 0) {
            return result.reverse().substring(0, result.toString().length() - k);
        }

        return result.reverse().toString();
    }
}