[프로그래머스] 주식가격 Python

현지·2021년 9월 25일
1

프로그래머스

목록 보기
21/34

문제

https://programmers.co.kr/learn/courses/30/lessons/42584

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

제한 사항

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

입출력 예시

아이디어

✅순서대로 자신과 자신 뒤에있는 수를 비교해서 더 작은 숫자가 있는지 학인한다.

  1. for문을 이용해서 prices의 길이만큼 반복을 한다.
  2. for문을 하나 더 이용하여 위의 인덱스 보다 하나 큰 범위(자신보다 뒤에 있는 요소값들)에 대해 반복한다.
  3. 맨 앞의 값과 비교하여 뒤의 값이 작거나 마지막인 경우 cnt를 하나 증가시킨 후 반복을 종료한다.
  4. 맨 앞의 값이 뒤의 값보다 작거나 같은 경우 cnt를 증가시킨다.
  5. prices의 마지막 값은 무조건 0 이므로 반복이 끝나고 마지막에 0을 추가한다.

solution함수_python

def solution(prices):
    answer = []
    for i in range(len(prices)):
        cnt = 0
        for j in range(i+1 ,len(prices)):
            if prices[i] > prices[j] or j == len(prices)-1:
                answer.append(cnt+1)
                break
            else:
                cnt += 1
    answer.append(0)
    return answer

다른사람 풀이

내 풀이와 비슷하지만 처음에 answer을 prices의 길이만큼 만들어두면 마지막에 0을 추가하지 않아도 된다.
또한 j가 마지막인지 확인하지 않아도 된다.(내 풀이는 cnt를 증가시킨 후 바로 저장하지 않아서 마지막을 확인한 후 answer에 추가해야 한다.)

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

출처: 프로그래머스 다른사람 풀이

0개의 댓글