[프로그래머스] 코딩테스트 연습 - 탐욕법(Greedy) Level 2 큰 수 만들기

uoahy·2021년 9월 16일
0

Solution.java

import java.util.*;

class Solution {
    public String solution(String number, int k) {
        String answer = "";
        
        Stack<Character> stack = new Stack<>();
        
        for (int i = 0; i < number.length(); i++) {
            while(!stack.empty() && i - stack.size() < k) {
                char num = stack.peek();
                
                if (number.charAt(i) <= num) break;
                
                stack.pop();
            }
            stack.push(number.charAt(i));
        }
        
        while (stack.size() > number.length() - k) {
            stack.pop();
        }
        
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < number.length() - k; i++) {
            sb.append(stack.peek());
            stack.pop();
        }
        
        answer = sb.reverse().toString();
        
        return answer;
    }
}

제출하니 테스트 케이스 하나가 시간초과가 떴다.

다음에 다시 도전해봐야겠다.


새로운 아이디어가 떠올라서 도전했더니 바로 통과.

역시 탐욕법은 아이디어 싸움인듯..

다른 사람의 풀이를 보고 자바 Stack 클래스에는 배열처럼 인덱스로 값을 찾을 수 있는 get 메소드가 있다는것을 알게되었다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

0개의 댓글