본문 바로가기
Algorithm/스택&큐&덱&힙

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

by HANNI하니 2023. 1. 26.

사용 언어 - Python3

문제 - 주식가격

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

정답

for문 반복문 or 스택/큐 문제 (정답 맞춘 여부 X)

정답1 풀이 - 이중 반복문

1. answer = 0벡터

2. i = [0,1,2,3,4] / j = [1,2,3,4]

하나씩 값 비교하면서 answer[i] +=1

def solution(prices):
    
    answer = [0]*len(prices)
    for i in range(len(prices)):
        for j in range(i+1,len(prices)):
            if prices[i] <= prices[j]:
                answer[i] += 1
            else:
                answer[i] += 1
                break

    return answer

 

정답2 풀이 - 스택/큐

1. prices의 인덱스와 가격을 enumerate로 같이 출력한다.

2. stack에 i append한다. stack의 마지막 원소보다 price 값이 작으면 stack을 pop한다.

인덱스 i에서 stack의 마지막 값 j를 뺀 값을 answer[j]에 추가해준다.

3. stack이 없을 때까지, stack.pop() 한다. answer[j] = len(pricies)-1-j

def solution(prices):
    answer = [0]*len(prices)
    stack = []
 
    for i, price in enumerate(prices):
        while stack and price < prices[stack[-1]]:
            j = stack.pop()
            answer[j] = i - j
        stack.append(i)
 
    while stack:
        j = stack.pop()
        answer[j] = len(prices) - 1 - j
 
    return answer

 


레퍼런스

  • 정답 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

  • 정답 참고
 

[알고리즘]주식가격(프로그래머스 문제) python 풀이(스택)

주식가격 문제 programmers.co.kr/learn/courses/30/lessons/42584 이 문제는 prices 리스트 각각의 값들이 몇초 동안 가격이 안떨어지고 있었는지 return 해주면 되는 문제 이다. return 은 prices의 리스트의 개수만

deftkang.tistory.com

 

댓글