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
'Algorithm > 프로그래머스' 카테고리의 다른 글
[세무민의 코딩일기] 로또의 최고 순위와 최저 순위 문제 풀이 (0) | 2021.09.04 |
---|---|
[세무민의 코딩일기] 프로그래머스 위클리 챌린지 2주차 상호 평가 문제 풀이 (0) | 2021.08.12 |
[세무민의 코딩일기] 프로그래머스 오픈채팅방 문제 풀기 (0) | 2021.08.04 |
[세무민의 코딩일기] 프로그래머스 부족한 금액 계산하기 문제 풀이 (0) | 2021.08.03 |
[세무민의 코딩일기] 프로그래머스 짝지어 제거하기 문제 풀이 (0) | 2021.08.01 |