[Algorithm] 스택/큐 주식가격 | 파이썬

이재현·2021년 3월 21일
0

Algorithm

목록 보기
3/5
post-thumbnail

코딩 테스트 연습 - 프로그래머스

[프로그래머스에서 풀기]


📌문제 설명

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.

❌제한 사항

  • prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
  • prices의 길이는 2 이상 100,000 이하입니다.

❓입출력 예

테스트 케이스

pricesreturn
[1, 2, 3, 2, 3][4, 3, 1, 1, 0]

입출력 예 설명

  • 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
  • 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
  • 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
  • 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
  • 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.

※ 공지 - 2019년 2월 28일 지문이 리뉴얼되었습니다.

💡문제 풀이

문제 풀이는 제 생각과 검색한 정보를 바탕으로 작성했습니다.

패턴

  1. 각 시점부터 가격이 떨어지지 않는 시점까지 생존 시간을 기록함
  2. 배열 길이만큼 한 단계씩 1을 반복

풀이 코드

def solution(prices):
    answer = [0] * len(prices)	# 1
    
    for i in range(len(prices)):
        for j in range(i + 1, len(prices)):	# 2
            answer[i] += 1	# 3
            
            if prices[i] > prices[j]:	# 4
                break
    
    return answer

입출력 예 #1 기준 설명

  1. 가격 생존일을 입력할 배열을 prices길이 만큼 선언 후 0으로 초기화
  2. 현재 계산 중인 prices[i]의 값과 그 다음 값의 기준 j
  3. 현재 price기준 비교할 다음 price가 있다면, 가격이 떨어지지 않은 기간은 최소 1은 보장되기 때문에 매 loop마다 +1

    현재 위치에 들어왔다는 뜻은 0 <= i < len(answer)이란 뜻으로 마지막 배열이 아니라는 의미로, 마지막 배열은 초기값 0으로 리턴됨

  4. 가격이 내려갔다면 현재 price의 생존 기간 카운터 종료

출처:

0개의 댓글

관련 채용 정보