https://programmers.co.kr/learn/courses/30/lessons/42584
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
✅순서대로 자신과 자신 뒤에있는 수를 비교해서 더 작은 숫자가 있는지 학인한다.
- for문을 이용해서 prices의 길이만큼 반복을 한다.
- for문을 하나 더 이용하여 위의 인덱스 보다 하나 큰 범위(자신보다 뒤에 있는 요소값들)에 대해 반복한다.
- 맨 앞의 값과 비교하여 뒤의 값이 작거나 마지막인 경우 cnt를 하나 증가시킨 후 반복을 종료한다.
- 맨 앞의 값이 뒤의 값보다 작거나 같은 경우 cnt를 증가시킨다.
- prices의 마지막 값은 무조건 0 이므로 반복이 끝나고 마지막에 0을 추가한다.
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
출처: 프로그래머스 다른사람 풀이