[Programmers] 주식가격

퍼롱's·2021년 9월 16일
0

🍒Programmers🍒

목록 보기
9/11
post-thumbnail

출처: 프로그래머스 코딩테스트 연습
https://programmers.co.kr/learn/courses/30/lessons/42584

📝 풀이(python3)

def solution(prices):
    # answer 길이가 prices 길이와 같으므로 0의 배열로 만들어줌
    answer = [0] * len(prices) 

    # prices의 맨 끝 값은 항상 0초 동안 가격이 떨어지지 않음
    # answer의 맨 끝 값이 0이므로 prices[-2]까지만 판단을 하면 됨
    for i in range(len(prices)-1):

        # prices[i]에 대해서 i번째 이후 값에 대해서만 탐색
        for j in range(i, len(prices)-1):

            # prices[i]보다 작은 prices[j]값이 있다면 가격이 떨어진 것이므로 break
            if prices[i] > prices[j]:
                break

            # prices[i]보다 prices[j]값이 크거나 같으면 가격이 떨어지지 않았으므로 1초를 더해줌
            else:
                answer[i] +=1

    return answer

스택과 큐의 카테고리에 있는 문제지만 스택과 큐보단 완전탐색 같은데....

스택과 큐를 이용하려고 생각을 해봤지만 떠오르질 않아서 결국 for문을 두 번 돌렸다

prices[i]에 대해서는 i+1번째 값 부터 끝값에 대해 판단하는 것이므로 j의 range를 (1, len(prices)-1)로 잡아주었다

prices[i] ≤ prices[j]이면 가격이 떨어지지 않은 것이므로 answer[i] += 1을 해주고 prices[i] > prices[j]이면 가격이 떨어진 것이므로 break해준다

profile
유지경성

0개의 댓글