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 |
댓글