본문 바로가기
공부/프로그래머스

[프로그래머스] 42584번

by _음주토끼_ 2022. 9. 9.

문제출처: 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