문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/42584
초 단위로 기록한 주식 가격의 배열이 주어지면 가격이 떨어지지 않은 기간이 몇초인지 세는 아주 쉬운 문제다.
푹 쉬고 간만에 문제를 풀려고 보니 너무 쉬운걸 선택한 것 같기도 하다. 문제를 편식하면 안되는데😑
내가 싫어하는 dp 문제랑 dfs 문제도 좀 자주자주 풀어야 익숙해지는데!!
예시는 아래와 같이 나타났다.
price | return |
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
첫번째 가격을 5초까지 총 비교했을때 1보다 작은 수는 없으므로 1 이상으로 유지되는 기간은 4초이다.
두번째 가격을 5초까지 총 비교했을때 이후 2보다 작은 수는 없으므로 2 이상으로 유지되는 기간은 3초이다.
세번째 가격을 5초까지 총 비교했을 때 다음에 바로 '2'가 나타나므로 그 이상으로 유지되는 기간은 1초이다.
네번째 가격은 5초까지 총 비교했을 때 마지막까지 떨어지지 않으므로 그 이상으로 유지되는 기간은 1초이다.
다섯번째 가격은 마지막 순서이므로 다음이 없다. 따라서 그 이상으로 유지되는 기간은 0초이다.
0으로 시작해서 유지되는 기간을 1초씩 더해주는 편이 편리해서 answer라는 배열 전체를 0으로 초기화하고 시작했다.
이후, 이중 반복문을 이용해서 이전 값과 비교했을 때 값이 내렸으면 break를 걸었다.
그 외에는 계속 반복문을 돌며 해당 원소에 값을 1씩 더한다.
그냥 이게 다였다. ...끝!
def solution(prices):
answer = [0]*len(prices)
cnt = 0
for i in range(len(prices)-1):
for j in range(i+1, len(prices)):
answer[i] +=1
if prices[j] < prices[i]:
break
return answer
'공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 42889번 (0) | 2022.08.02 |
---|---|
[프로그래머스] 81301번 (0) | 2022.06.15 |
[프로그래머스] 12977번 (0) | 2022.06.15 |
[프로그래머스] 86051번 (0) | 2022.06.15 |
[프로그래머스] 59413번 (0) | 2022.06.15 |