본문 바로가기

코딩테스트/programmers

큰 수 만들기

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

 

프로그래머스

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

programmers.co.kr

 

숫자의 자리는 바꾸지 않고, k개의 숫자를 제거 했을 때의 숫자가 가장 큰 값을 찾는 문제.

 

어떤 수는 앞에 위치한 숫자가 클 수록 더 커지기 때문에, 탐욕법으로 앞자리부터 큰 수를 찾아나가면 된다.

 

다만 무한정 큰 수를 찾으면 제거해야하는 숫자가 k개보다 많거나 적어질 수 있으므로, 현재 체크해야할 수의 자릿수가 제거해야할 숫자만큼은 남아야 한다. 이점을 고려해서 작성하면... 타임아웃이 뜬다.

 

9를 만나면 다음 자리로 갈 필요없이 그 수가 가장 크다고 보면 되기 때문에, 이 점만 if로 분기처리해주면 된다.

 

class Solution {
    public String solution(String number, int k) {
        
        String ans = "";
        
        int len = number.length() - k;
        
        int curr = 1;
        int lt = 0;
        
        while (curr <= len) {
            char max = '0';
            
            for (int i = lt; i < k + curr; i++) {
                char num = number.charAt(i);
                if (num == '9' || num - max > 0) {
                    max = num;
                    lt = i + 1;
                    if (num == '9') break;
                }
            }
            
            curr++;
            ans += max;
        }
        
        return ans;
    }
}

'코딩테스트 > programmers' 카테고리의 다른 글

두 큐 합 같게 만들기  (0) 2023.11.15
삼각 달팽이  (0) 2023.11.13
소수 찾기  (1) 2023.11.13
다리를 지나는 트럭  (0) 2023.11.09
가장 큰 수  (0) 2023.11.09