본문 바로가기

Computer Science/알고리즘 문제풀이

[Programmers] #9 큰수 만들기[JAVA]

1. 문제 설명

 

 

어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다.

 

예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다.

 

문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요.

 

2. 나의 코드

 

import java.util.*;

class Solution {
    public String solution(String number, int k) {
        String answer = "";
        String [] numbers = number.split("");
        int [] n = new int[numbers.length];
        int windowF;
        int windowL = k + 1; // n - (n-k-1) 이므로...
        int max = 0;
        int index = 0;
        
        //String to int
        for(int i =0;i < n.length;i++) {
            n[i] = Integer.parseInt(numbers[i]);
        }
        
        // find max between 0 and n.length - k
        for(int i = 0; i < n.length - k;i++) {
            windowF = index;
            for(int j = windowF; j < windowL; j++){
                if(max < n[j]){
                    max = n[j];
                    index = j+1;
                }
            }
            if (windowL < n.length)
                windowL += 1;
            
            answer += String.valueOf(max);
            max = 0;
        }
        return answer;
    }
}

 

 

 

3. 보완

 

대체 테스트 10이 뭐길래 시간초과가 되는지 모르겠다....!!!!!!!!!!!!!!!!!11