728x90
📍 프로그래머스 2단계 - 큰 수 만들기
그리디를 활용하는 문제인데, 너무 어렵게 생각했다. 결론적으로 k
가 남아있는지 없는지에 여부에 따라 로직을 분리했다. 2번 순서까지만 작성하면 12번 테스트 케이스가 실패로 뜨는데, k
값이 남아있기 때문에 처리하는 로직을 작성해야 한다. (3번 참고)
- 반복문으로
number
을 탐색한다. answer
의 마지막 값이num
보다 작으면 가장 큰 수를 만들기 위해num
을push
하기 위해answer
의 마지막 값을pop
해준다. 이때, 1개의 수를 제거했으므로k
를 1씩 빼준다.- 반복문을 모두 돌고 난 이후에도
k
가 남아있다면k
개 수만큼 제거해야하기 때문에k
번 만큼pop
을 해준다.
하단에는 입출력 3번째 예시의 number = 4177252841
, k = 4
의 풀이방법이다.
728x90
function solution(number, k) {
let answer = [];
for (const num of number) {
while (answer.length && k > 0 && answer[answer.length - 1] < num) {
k--;
answer.pop();
}
answer.push(num);
}
// 테스트케이스 12번 조건
while (k) {
answer.pop();
k--;
}
return answer.join("");
}
반응형
'Algorithm > 프로그래머스(Programmers)' 카테고리의 다른 글
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 위장 (0) | 2022.03.29 |
---|---|
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 구명보트 (0) | 2022.03.28 |
[ 자바스크립트(JavaScript) ] 프로그래머스 level3 - 네트워크 (0) | 2022.03.23 |
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 가장 큰 수 (0) | 2022.03.23 |
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 올바른 괄호 (0) | 2022.03.23 |
댓글