Algorithm/프로그래머스

[세무민의 코딩일기] 프로그래머스 주식가격 문제 풀기

세기루민 2021. 8. 9. 22:27
728x90

오늘 풀어볼 문제는 프로그래머스 스택/큐 문제 중 하나인 주식가격 문제입니다.


1. 문제 설명 및 제한 사항


2. 입출력 예시


3. 문제 풀이 

제가 생각한 문제 풀이 방법은 위와 같습니다.

해당 i번째의 값을 기준으로 뒤에 나오는 값이 하락하는 경우 -1을 해주면 됩니다. 

그리고 하락과 상승폭을 구한 값과 해당 i번째 기준으로 arr의 마지막까지의 길이의 합을 구해주면 됩니다.

코드는 아래와 같습니다.

# 1번 풀이(Stack 이용 - 시간초과)
from collections import deque 
def solution(prices):
    stacks = deque(prices)
    result = []
    temp = 0
    count = 0
    inputprice = 0
    numbers = 0
    while len(stacks) > 0:
        if inputprice == 0:
            numbers = 0
            inputprice = stacks.popleft()

        else:
            if stacks[numbers] >= inputprice:
                count += 1
                numbers += 1
            else:
                result.append(count + 1)
                inputprice = 0
                numbers = 0
                count = 0

            if numbers == len(stacks):
                result.append(count)
                numbers = 0
                inputprice = 0    
                count = 0

        if len(stacks) == 0:
            result.append(0)
            break

    return result

처음에 그림처럼 생각하지 않고 풀었던 방법인데 이 방법은 결과는 맞지만 효율성이 떨어집니다.(시간초과)

def solution(prices):

    result = [0] * len(prices)
    for i in range(len(prices)):
        count = 1
        for j in range(i + 1, len(prices)):
            if prices[i] <= prices[j]:
                result[i] += count
            else:
                result[i] += count
                break
  
    return result

효율성에서 통과한 방법으로 위의 그림처럼 풀어주면 바로 해결할 수 있습니다. 

문제가 스택/큐 문제라고 무조건 스택과 큐를 사용할 필요는 없다는 걸 알 수 있었습니다.


4. 결과


이번 포스팅에서는 프로그래머스에서 주식가격이라는 문제를 풀어봤습니다.

다음에는 더 유익한 내용으로 찾아오겠습니다.

728x90