728x90
📖 문제 : 주식가격
문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
입출력 예
prices | return |
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
입출력 예 설명
- 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
- 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
- 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
- 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
- 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.
※ 공지 - 2019년 2월 28일 지문이 리뉴얼되었습니다.
내 코드
from collections import deque
def solution(prices):
answer = []
prices = deque(prices)
while prices:
test = prices.popleft()
cnt = 0
for x in prices:
if test > x :
cnt+=1
break
cnt+=1
answer.append(cnt)
return answer
⭐️ Point ! ⭐️
- 이게 기존에 있던 테스트 케이스만 보고 문제를 이해하면 테스트케이스만 맞고, 채점하면 틀리는데
여기에서는 현재 체크하고자하는 test 변수를 두고 그 변수와 초가 증가함에 따라 낮은 값이 나와도 cnt+1 , 높은 값이 나와도 cnt+1을 해주어야하고 낮은 값이 나왔을 때, cnt+1을 해주고 break를 해주어야한다. break를 언제하냐에 따랐지 cnt+1는 어느 경우에나 해주어야하는 것 !
높았을 때만 해주는 게 아니라는 거 ! - 그리고 pop(0)이 아닌 deque로 자료형을 바꾸어 popleft()를 해야 시간초과가 나지 않는다 !
프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/42584#
참고
728x90
'Algorithm (Python, Java, SQL) > Programmers' 카테고리의 다른 글
[프로그래머스 고득점 Kit - DFS/BFS] 타겟 넘버 (Python) (0) | 2023.05.10 |
---|---|
[프로그래머스 고득점 Kit - 힙] 더 맵게 (Python) (0) | 2023.05.05 |
[프로그래머스 고득점 Kit - 스택/큐] 프로세스 (Python) (튜플로 이루어진 리스트 에서 max와 lambda를 사용해 앞의 값들 중 max 값 찾기) (0) | 2023.05.02 |
[프로그래머스 고득점 Kit - 스택/큐] 올바른 괄호 (Python) (0) | 2023.05.02 |
[프로그래머스 고득점 Kit - 스택/큐] 기능 개발 (Python) (0) | 2023.05.01 |