[BOJ] 2812 크게 만들기 | 스택

Urther·2021년 11월 10일
0

알고리즘

목록 보기
22/41
post-thumbnail

Problem | 크게 만들기


N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.

✨ 접근 방식

  • nums 를 모두 순회하고도 pop 할 갯수가 k보다 작다면 k갯수만큼 stack.pop()을 진행해준다.

- ✔️ 전체코드

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");

let [n, k] = input[0].split(" ").map(Number);
let number = input[1];

let stack = [];
let pop = 0;
for (let i = 0; i < n; i++) {
  if (stack.length && Number(number[i]) > Number(stack[stack.length - 1])) {
    while (Number(stack[stack.length - 1]) < Number(number[i])) {
      if(pop===k) break;
      stack.pop();
      pop++;
    }
  }
  stack.push(number[i]);
}

while(pop<k){
  stack.pop();
  pop++;
}
let answer=stack.join('');
console.log(answer);
profile
이전해요 ☘️ https://mei-zy.tistory.com

0개의 댓글