Notice
Recent Posts
Recent Comments
Link
반응형
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

붕어의 개발 기록

8월 10일 99클럽 항해 20일 본문

항해99(2024-07~08)/99클럽 하루 한문제

8월 10일 99클럽 항해 20일

은붕어_ 2024. 8. 10. 16:18
반응형

99클럽 항해 20일차

 

오늘의 문제는 큰 수 만들기이다.

 

문제에서 주어지는 문자열에서 숫자를 추출해내어 크기를 비교하여 가장 큰 수를 반환하는 문제이다.

    -> 스택을 사용하여서 숫자를 왼쪽에서부터 순차적으로 읽으면서, 현재 숫자가 스택의 마지막 숫자보다 크면 스택에서 숫자를 제거한다.

    -> 제거한 숫자의 수가 k가 될때까지 반복한다.

    -> 최종적으로 남은 숫자들을 스택에 저장합니다.

    -> 스택의 숫자들을 문자열로 변환하여 결과를 반환합니다.

순으로 문제를 해결하였다.

import java.util.Stack;

public class Solution {
    public static String solution(String number, int k) {
        Stack<Character> stack = new Stack<>();
        int len = number.length();

        for (int i = 0; i < len; i++) {
            char current = number.charAt(i);

            // k개 숫자를 제거할 때까지 스택의 마지막 숫자와 비교
            while (k > 0 && !stack.isEmpty() && stack.peek() < current) {
                stack.pop();
                k--;
            }

            stack.push(current);
        }

        // 만약 k가 0이 되지 않았으면 남아있는 k개를 제거
        while (k > 0) {
            stack.pop();
            k--;
        }

        // 스택의 숫자들을 문자열로 변환
        StringBuilder answer = new StringBuilder();
        for (char c : stack) {
            answer.append(c);
        }

        return answer.toString();
    }

}

 

 

 

 

반응형