[프로그래머스] 큰 수 만들기 42883 (JAVA)

dia·2023년 11월 14일
0

풀이 방식

  1. 숫자 하나씩 순회하며 stack에 넣기
  2. stack 맨 위에 들어있는 숫자가 현재 숫자보다 작지 않으면 계속 버리기
  3. stack에 들어간 숫자 중 필요한 길이 만큼 정답으로 가져오기

포인트

숫자 버리기

  • stack에 들어간 숫자가 작은 경우
    k개 초과하여 버리지 않도록 주의
  • 순회는 마쳤으나 추가로 더 버려야하는 경우
    k개 미만으로 버리지 않도록 주의

구현

public class NUM42883 {
    public static void main(String[] args) {
        String number = "98765";
        int k = 3;
        System.out.println(solution(number, k));
    }
    public static String solution(String number, int k) {
        String answer = "";
        Stack<Character> stack = new Stack<>();

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

        Iterator<Character> iterator = stack.iterator();
        while(iterator.hasNext() && answer.length() < number.length() - k) { answer += iterator.next(); }

        return answer;
    }
}

*다른 분들의 코드를 참고하여 작성했습니다

profile
CS 메모장

0개의 댓글