[프로그래머스] 주식 가격 [스택/큐] [python] Level2
문제 설명
초 단위로 기록된 주식가격이 담긴 배열 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초간 가격이 떨어지지 않았습니다.
구현 및 설계
my_solution
def solution(prices):
for i in range(len(prices)):
count = 0
for j in range(i+1,len(prices)):
count+=1
if prices[i] > prices[j]:
break
prices[i] = count
return prices
접근 방식 prices를 순회하며 뒤의 값들과 순서대로 비교한다.
이때 뒤의 값중 자신보다 낮은 값을 발견했을때 비교하는 for문을 끝내고 몇초뒤에 발견했는지 저장하는 방법으로 접근하였다.
1. prices를 순회하는 for문을 작성
2. prices를 i+1~n까지 순회하며 count하는 for문을 작성
3. prices[i]와 prices[j]를 비교하여 prices[j]가 더 작을 경우 break
4. count하는 for문이 끝나면 몇초가 지났는지 저장한다.
5. 모든 for문이 끝나면 떨어지지 않은 기간이 저장된 prices리스트를 반환하여 해결!
모범 solution
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
나와 같은 방식으로 문제에 접근한 solution이다.
다른 점은 내가 초를 세는데 count를 선언해 사용했다면 이 solution은 answer배열을 선언해 초를 셋다는 점이 있다.
깔끔하게 잘짠 코드이다.
반응형
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 다리를 지나는 트럭 [스택/큐] [python] (0) | 2020.09.22 |
---|---|
[프로그래머스] 스킬트리 [Summer/Winter Coding2019] [python] (0) | 2020.09.22 |
[프로그래머스] 멀쩡한 사각형 [Summer/Winter Coding2019] [python] (0) | 2020.09.22 |
[프로그래머스] 삼각 달팽이 [월간 코드 챌린지 시즌1] [python] (0) | 2020.09.22 |
[프로그래머스] [1차]다트게임 [2018 KAKAO BLIND RECRUITMENT] [python] (0) | 2020.09.21 |