코테 준비
[프로그래머스] 큰 수 만들기 (js)
박수련
2024. 3. 28. 11:24
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/42883
1. number에서 k개의 수를 제거해 만들 수 있는 가장 큰 숫자를 구하는 문제.
2. number의 범위는 2 ~ 1,000,000
3. k는 1 ~ (number의 자릿수-1)
풀이
숫자들을 스택에 쌓으면서 기존 스택에 있는 값보다 새로운 값이 크면 스택을 비우고 새로운 값을 넣어주었다.
cnt 변수를 통해 pop 횟수를 세어주며 cnt<k일 때 pop 시킬 수 있도록 설정했다.
위 과정을 모두 끝냈을 때 cnt가 아직 k보다 작다면, 새로운 값보다 작은 값은 모두 pop이 되었으니 stack은 내림차순 형태의 숫자가 될 것이다. 따라서 k까지 남은 횟수만큼 stack을 pop해주었다.
코드
function solution(number, k) {
var answer = '';
var stack=[number[0]];
cnt=0
for (let i=1; i<number.length; i++){
while (stack[stack.length-1]<number[i] && cnt < k){
stack.pop()
cnt+=1;
}
stack.push(number[i]);
}
while (cnt<k){
stack.pop();
cnt+=1
}
stack.forEach((num)=>answer+=num);
return answer;
}
회고
사실 옛날에 풀다가 틀렸던 문제다. 성공은 못했었지만 한번 시도를 해봤던 문제여서인지 비교적 쉽게 풀렸다.
갑자기 자바스크립트 코테가 잡혀서 연습할 겸 자바스크립트로 코테 문제를 풀어봤다.
괄호 쓰는 것도, 리스트에 append 안되는 것도 너무 헷갈렸다.
언어를 자바스크립트로 한정시키는 회사를 위해 내가 언어를 바꿔야할까도 생각해봤지만.. 그런 곳은 과감히 포기할란다.
개발을 자스로 하니, 코테도 자스로 풀면 개발 실력에 도움을 줄 순 있겠지만 일단 코테를 통과하는게 목표니까...