큰 수 만들기

문제


문제 풀이

스택 자료구조를 이용하여 number에 있는 값을 순서대로 입력한다. 

 

이전 입력된 문자가 현재 입력되는 문자보다 작은 경우 스택에서 빼주고 k값을 -1 해준다. 그렇게 다 돌고 나면 나오는 결과에서 아직 k가 1 이상인 경우 현재 스택에서 먼저 나오는 값들을 k가 0이 될 때 까지 빼준다. 

 

스택에 남아 있는 값들을 StringBuilder를 통해서 문자열로 결합하고 reverse후 String으로 반환해준다. 


나의 답안

public static String solution(String number, int k) {
    Stack<Character> deque = new Stack<>();
    StringBuilder sb = new StringBuilder();

    char[] chars = number.toCharArray();

    for (int i = 0; i < chars.length; i++) {

        char cur = chars[i];

        while (!deque.isEmpty() && deque.peek() < cur && k > 0) {
            deque.pop();
            k--;
        }

        deque.add(cur);
    }
    while (k > 0) {
        deque.pop();
        k--;
    }

    while (!deque.isEmpty()){
        sb.append(deque.pop());
    }

    return sb.reverse().toString();
}

'Programmers 문제풀이 > Lv.2' 카테고리의 다른 글

소수 찾기  (0) 2023.04.05
모음사전  (0) 2023.04.05
땅따먹기  (0) 2023.04.05
주식 가격  (0) 2023.04.05
오픈채팅방  (0) 2023.04.05