본문 바로가기

코딩테스트

[프로그래머스] level2. 큰 수 만들기 (javascript)

반응형

문제

프로그래머스 문제 링크

나의 풀이

처음에 나름 풀이를 해보았는데, test케이스만 통과되고 실제 채점을 전부 실패가 떠서 인터넷 검색을 해서 찾아보았다.

다른이의 풀이

 

[JS] 프로그래머스 - 큰 수 만들기

1. 문제 설명 2. 제한 조건 3. 입출력 예 4. 나의 풀이  쉽게 생각했다가 큰 코 다친 문제다. 예상치 못했던 테스트 케이스 10에서의 시간 초과는 멘붕 그 자체였다. 그런데 이 문제가 탐욕법이라는

taesung1993.tistory.com

위 블로그에서 가져온 코드입니다 :)

친절한 설명이 필요하시다면 읽어보시는걸 추천드립니다!

 

function solution(number, k) {
    let stack = [];
    for(let i = 0 ; i < number.length;i++){
        let value = number[i];
        while(k > 0 && stack[stack.length-1] < value){
            stack.pop()
            k--
        }
        stack.push(value)
    }
    stack.splice(stack.length-k,k) 
    return stack.join("")
}

 

처음에 while문에 무한 루프 되는거 아닌가? 했지만, stack이 비어있을때 stack[stack.length-1] 이 undefine이 나오고, undefine은 NaN 취급, 비교 연산자를 하면 무조건 false가 나오기에 문제가 없었다.
그리고 마지막에 pop이 k보다 적게 되었을 경우 splice를 통해 남은 k만큼 지워주었다.

상당히 간단하게 풀 수 있는데 나는 왜 이거에 2배되게끔 코드를.. 공부 열심히 합시다..👼

참조 사이트

undefine 비교연산
splice MDN

반응형