코딩 테스트/프로그래머스

프로그래머스 - 큰수 만들기 문제 - 자바

programmers.co.kr/learn/courses/30/lessons/42883

 

코딩테스트 연습 - 큰 수 만들기

 

programmers.co.kr

k 가 0이 될때 까지 앞서 들어온 값들과 비교해가면서 큰수를 만든다고 생각하면된다.

수 = 1924, k= 2인 경우

1입력 - {1}

9입력 - {9} (기존에 있던 1을 제거됨)

2입력 - {9, 2}

4입력 - {9, 4} (기존에 있던 2을 제거됨) 

// 프로그래머스 큰수 만들기 문제
class BiggestNumber {
    public String solution(String number, int k) {
        char[] result = new char[number.length() - k];
        Stack<Character> stack = new Stack<>();

        for(int i = 0; i < number.length(); i++){
            char c = number.charAt(i);

            // stack에 있는 값들과 입력받은값을 비교후 입력받은 값보다 작은 값은 스택에서 꺼냄
           while(!stack.isEmpty() && stack.peek() < c && k >= 1) {
                stack.pop();
                k -= 1;
            }
            stack.push(c);
        }

        for(int i = 0; i < result.length; i++) {
            result[i] = stack.get(i);
        }
        return new String(result);
    }
}