반응형
문제
큰 수 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/42883
풀이
설명
주어진 숫자에서 특정 개수의 수를 제거했을 때, 남은 수들로 만들 수 있는 가장 큰 숫자를 구하는 문제입니다.
앞에서부터 숫자를 한 자리씩 비교하며, 앞자리 숫자가 뒷자리 숫자보다 작은 경우, 앞자리 숫자를 제거합니다.
이 과정을 최대 k번만큼 반복하면 됩니다.
예시 코드
function solution(number, k) {
const stack = [];
let drop = k;
for (const num of number) {
while (drop > 0 && stack.length && stack.at(-1) < num) {
stack.pop();
drop--;
}
stack.push(num);
}
return stack.slice(0, stack.length - drop).join("");
}
숫자 비교 및 제거 알고리즘에 스택을 사용해 효율적으로 처리할 수 있게 했습니다.
'Algorithm > Greedy' 카테고리의 다른 글
그리디 알고리즘 이해하기 - 매 순간 최적의 선택으로 문제 해결하기 (2) | 2023.11.13 |
---|