문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42584
📜 접근 방법
특정 가격을 기준으로 그 이후 가격이 유지 혹은 상승을 몇초간 했는지 구한다.
i번째 가격을 비교시 i + 1 이후 가격들을 비교한다.
❌ 실패 코드
def solution(prices):
answer = []
for i in range(len(prices)):
cnt = 0
for j in range(i + 1, len(prices)):
if prices[i] <= prices[j]:
cnt += 1
answer.append(cnt)
return answer
✅ 정답 코드
def solution(prices):
answer = []
for i in range(len(prices)):
cnt = 0
for j in range(i + 1, len(prices)):
cnt += 1
if prices[i] > prices[j]:
break
answer.append(cnt)
return answer
🔥시간 줄인 코드
from collections import deque
def solution(prices):
answer = []
q = deque(prices)
while q:
price = q.popleft()
cnt = 0
for p in q:
cnt += 1
if price > p:
break
answer.append(cnt)
return answer
💡알게 된점
문제가 정확하게 요구하는 것을 써두지 않아서 좀 헷갈렸다.(가격이 떨어지면 종료해야하는) 그리고 무조건 +1을 해야하는게 이해가 되지않는다.
deque를 사용하게 노력해야겠다.
'코딩테스트 > Python' 카테고리의 다른 글
[python] 코딩테스트시 입력처리시 input 함수를 사용하지 않는 이유 (0) | 2023.05.06 |
---|---|
[python 백준 2075] N번째 큰수 (0) | 2023.05.02 |
[python] 프로그래머스 괄호 회전하기 (0) | 2023.04.24 |
[python] 프로그래머스 영어 끝말잇기 (0) | 2023.04.22 |
[python] 프로그래머스 올바른 괄호 (0) | 2023.04.21 |