주식가격
by Cori문제
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return하도록
solution 함수를 완성하세요.
제한사항
· prices의 각 가격은 1이상 10,000이하인 자연수입니다.
· prices의 길이는 2이상 100,000이하입니다.
입출력 예
prices | return |
[1, 2, 3, 2 3] | [4, 3, 1, 1, 0] |
풀이
1. Me
def solution(prices):
answer = []
reversed_p = list(map(int, reversed(prices)))
time_cnt = []
# print(t)
# print(reversed_p)
for _ in range(len(prices)):
t = reversed_p.pop()
for i in range(len(reversed_p)):
print(reversed_p[-(i+1)])
if reversed_p[-(i+1)] >= t:
time_cnt.append(reversed_p[-(i+1)])
else:
break
return answer
머리가 잘 안 돌아간다. . 문제의 카테고리가 스택 / 큐에 있다고 해서 굳이 pop, remove 사용하려 하지 말자
2. Others
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
answer을 [0] * len(prices) 배열로 선언하고, 배열을 탐색하며 값이 떨어지지 않았을 경우 해당 인덱스에 +1을 해줌. 탐색하며 값이 떨어지는 경우 break를 통해 반복문을 빠져나간다. 반복문에도 answer[i] += 1 구문이 있는데, 이는 다음 인덱스 값을 탐색하며 소모된 1초를 표시해주기 위함이다.
from collections import deque
def solution(prices):
answer = []
prices = deque(prices)
while prices:
c = prices.popleft()
count = 0
for i in prices:
if c > i:
count += 1
break
count += 1
answer.append(count)
return answer
큐를 이용해 문제를 해결하였다. prices 배열에 요소가 남아있는 동안, popleft 함수를 이용해 왼쪽에서 값을 제거하고, 그 이후는 위와 같은 로직으로 값을 구한다.
'CS > Coding Test' 카테고리의 다른 글
JadenCase 문자열 만들기 (0) | 2021.08.31 |
---|---|
N개의 최소공배수 (0) | 2021.08.30 |
다리를 지나는 트럭 (0) | 2021.08.25 |
비밀지도 (0) | 2021.08.24 |
완주하지 못한 선수 (0) | 2021.08.24 |
블로그의 정보
코딩하는 오리
Cori