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

Jimin·2022년 4월 18일
0

처음에는 스택을 이용해 해결하려고 했다. 모든 숫자를 스택에 넣고 하나씩 빼면서 그 값이 스택의 top값과 비교했을 때 크거나 같으면 answer에 추가하고 그렇지 않은 경우 카운트 변수에 1을 더해주어 이 값이 k와 동일해지면 break 하고 마지막으로 스택에 남아있는 모든 값을 answer에 덧붙여주었다.
(나도 무슨 말인가 싶지만... 일단 문제에 예시로 나온 케이스는 성공했다. 하지만 채점 결과는 참담했다. 😥)
 public String solution(String number, int k) {
        String answer = "";
        int len = number.length();
        Stack<Integer> stack = new Stack<>();

        for (int i = len-1; i >= 0; i--) {
            stack.push(number.charAt(i)-'0');
        }

        int count = 0;
        while (true) {
            if (count == k) {
                while (!stack.isEmpty()) answer += String.valueOf(stack.pop()); 
                break;
            }
            int tmp = stack.pop();
            if (!stack.isEmpty() && tmp >= stack.peek() )  {
                for (int i = 0; i < answer.length(); i++) {
                    if (answer.charAt(i)-'0' < stack.peek())  {
                        count += answer.length();
                        answer = "";
                    }
                }
                answer += String.valueOf(tmp);
            }
            else  {
                count++;
            }
        }

        return answer;
    }


0개의 댓글