공부기록

큰 수 만들기 본문

코테/프로그래머스

큰 수 만들기

코타쿠 2021. 8. 29. 09:41

문제

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

내 코드

import java.util.*;

class Solution {
    public String solution(String number, int k) {
        String answer = "";

        Stack<Character> s = new Stack<>();

        for(int i=0; i<number.length(); i++){
            char cur_c = number.charAt(i);
            while(!s.isEmpty() && k > 0 && s.peek() < cur_c){
                k--;
                s.pop();
            }
            s.push(cur_c);
        }

        while(k > 0){
            s.pop();
            k--;
        }

        while(!s.isEmpty()){
            answer = s.pop() + answer;
        }


        return answer;
    }
}

피드백

  • 결론은 스택을 사용해서 k가 허용되는 한 내리막길을 만드는 것
  • 생각해보면, 앞 자리수들만 최대한 커지면 되기 때문에 앞의 작은 수들만 빼버리면 되는 것이다.
  • 뒤의 큰수가 앞의 작은수들을 빼면서도, 앞의 작은수들의 트레이스를 유지하기 위해 스택이 사용된다.
  • 스택 문제를 나중에 더 풀어봅시다.

'코테 > 프로그래머스' 카테고리의 다른 글

이중우선순위큐  (0) 2021.09.03
다음 큰 숫자  (0) 2021.08.30
조이스틱  (0) 2021.08.26
가장 큰 수  (0) 2021.08.21
퍼즐 조각 채우기 (위클리 챌린지 3주차)  (0) 2021.08.17