[프로그래머스] 주식가격

Jun_Gyu·2023년 8월 31일
0

프로그래머스

목록 보기
10/14
post-thumbnail

첫 풀이

해당 문제는 스택의 원리를 이해하고 있는지 물어보는 문제이며, 주어진 prices 배열에서 각 요소(가격)들이 얼마나 유지되었는지를 구해야 한다.

문제를 보면 확인할 수 있듯이, 가격은 이하가 아니라, 미만을 기준으로 답을 return해야 한다.

풀이로는 answer라는 빈 배열에 cnt라는 변수를 통해서 얼마만큼 가격이 유지되었는지 반복문을 순회할때마다 1씩 증가하여 최종적으로 answer에 마지막 인덱스로 push 시켜준다.

const solution = (prices) => {
    let answer = []
    for(let i = 0; i < prices.length; i++){
        let cnt = 0 // 카운트 초기화
        for(let y = i+1; y < prices.length; y++) {
            cnt++
            if (prices[i] > prices[y]) { // 가격이 떨어졌는지
                answer.push(cnt)
//				console.log("가격떨어진 경우 : ", cnt)
                break
            }
            if (prices.length - 1 === y) { // 인덱스 끝에 도달했는지
                answer.push(cnt)
//              console.log("인덱스 끝인 경우 : ",cnt)

            }
        }
    }
    answer.push(0)
    return answer
}

그리고 맨 마지막으로 answer 배열에 0을 push 하는 모습을 볼 수 있는데,
이는 prices 배열의 길이가 얼마든지 간에 마지막 가격의 유지 시간은 무조건 0 이기 때문에 prices[prices.length-1]까지는 직접 이중 반복문을 통해 값을 구하고,
마지막은 강제로 0을 push 하는 방식으로 문제를 해결했다.

문제 해결 후 풀이를 개선하고자 다른사람들의 풀이도 참고했는데,
대부분의 사람들이 While 반복문, 또는 위와같은 2중 반복문으로 스택의 개념을 활용해서 문제를 해결하는 형태였다.

기본 원리 자체는 크게 벗어나지 않는 것 같아 따로 추가하지는 않았다..!

profile
시작은 미약하지만, 그 끝은 창대하리라

0개의 댓글