[Java] level2 - greedy_42883 : 큰 수 만들기

oneofakindscene·2021년 8월 29일
0

programmers_java

목록 보기
9/10

문제 링크

풀이

  • 이번 문제는 k개의 숫자를 빼고 남은 숫자들로 제일 큰 수를 만드는게 아니라, 현재 주어진 숫자에서 즉 순서가 지켜진 상태에서 k개의 숫자를 뺏을때 제일 큰 수를 만드는게 목표

로직

  • stack을 활용한다
    • stack에 숫자를 하나씩 집어넣는데, 이미 들어온 숫자보다 다음에 집어넣을 숫자가 큰 경우 이미 집어넣은 숫자를 빼주면 가장 큰 숫자를 만들 수 있음
for (int i=0; i<number.length(); i++) {
   char c = number.charAt(i);

   // 이번에 들어올 숫자가 이전에 들어와있던 숫자와 비교했을때 크면 이전에 들어온 숫자를 빼준다
   while (!stack.isEmpty() && stack.peek() < c && k-- > 0) {
       stack.pop();
   }
   stack.push(c);
profile
oneofakindscene

0개의 댓글