[프로그래머스] 탑 (JavaScript)

nnm·2020년 4월 28일
0

프로그래머스 탑

문제풀이

이 문제는 두 가지 방법으로 풀 수 있었다.

  • 간단하게 각 탑 마다 자신의 왼쪽으로 탐색하며 자신보다 높은 탑을 만나면 그 인덱스를 저장하는 방법
  • 현재 송신 탑보다 낮은 수신 탑은 모두 제거하고 높은 수신 탑만을 지속적으로 스택에 담아가는 방법

Array가 가지고 있는 메서드 그리고 그를 이용해 stack, queue 등을 만들 수 있음을 알게되었다.

구현코드

function solution1(heights){
    let stack = [];
    let answer = [];
  
    for(let i = 0 ; i < heights.length ; ++i){
        while(stack.length > 0 && heights[stack[stack.length - 1]] <= heights[i]){
            stack.pop();
        }
        
        if(stack.length > 0){
            answer.push(stack[stack.length - 1] + 1);
        } else {
            answer.push(0);
        }
        
        stack.push(i);
    }
    
    return answer;
}


function solution2(heights) {
    return heights.map((item, idx) => {
        while(idx >= 0){
            idx--;
            if(heights[idx] > item){
                return idx + 1;
            }
        }
        
        return 0;    
    });
}
profile
그냥 개발자

0개의 댓글