본문 바로가기
정리/알고리즘

탐욕법 - 큰 수 만들기

by Hudini30 2022. 2. 23.

프로그래머스 (탐욕법) - 큰 수 만들기

해당 문제를 풀때에는 처음에는 문제를 제대로 이해 하지 못해 각 자릿수의 수를 구해 number 자리수 - k 자리수의 가장 큰수를 구했었습니다. 이후 문제를 이해해 보니 입력받은 문자의 순서는 유지한채로 k 만큼 수를 제거 했을 때 가장 큰수를 구하는 문제였습니다. 순서를 유지 해야 할 경우 가장 큰 수를 만들려면 앞자리가 가장 큰 것이 중요하기에 앞에서 k번째까지의 수중 가장 큰수가 있는 수까지 과감하게 제거 하는 방향으로 진행했습니다. base case는 제거해야하는 자릿수와 입력받은 숫자의 자릿수가 동일 할 때와 남은 제거해야 하는 수가 없을 경우 2가지로 정해 로직을 구현했습니다.

public String solution(String number, int k) {
        if (number.length() == k) {
            return "";
        }

        char maxDigitNumber = 0;
        int maxDigitIndex = 0;
        int remainK = k;

        for (int i = 0; i<= k; i++) {
            char temp = number.charAt(i);

            if (temp > maxDigitNumber) {
                maxDigitNumber = temp;
                maxDigitIndex = i;
            }
        }

        remainK -= maxDigitIndex;
        if (remainK == 0) {
            return number.substring(maxDigitIndex);
        } else {
            return maxDigitNumber + solution(number.substring(maxDigitIndex + 1), remainK);
        }
    }

'정리 > 알고리즘' 카테고리의 다른 글

탐욕법 - 섬 연결하기  (0) 2022.03.02
탐욕법 - 구명보트  (0) 2022.03.01
완전탐색 - 카펫  (0) 2022.02.21
완전탐색 - 소수찾기  (0) 2022.02.19
완전탐색 - 모의고사  (0) 2022.02.17

댓글