-
[프로그래머스 / Python] 주식가격 | 초코더알고리즘/프로그래머스 2020. 8. 18. 16:42
https://programmers.co.kr/learn/courses/30/lessons/42584
문제
주식가격이 담긴 배열 prices가 주어지면 가격이 떨어지지 않은 기간이 몇초인지를 알려주는 함수를
짜야함. 문제가 스택/덱 으로 분류되어 있었는데 그냥 이중for문으로 구현함.
접근법
1. i번째 원소와 i번째 이후 원소들을 비교하며 i번째 원소보다 크거나 같으면 cnt를 증가시켜준다.
2. i번째 원소보다 작아지는 지점이 나오면 cnt를 증가시키고 for문을 종료한다.
종료시키는데 cnt를 증가시키는 이유는 => [3 2] 는 2가 바로 작아지는 지점이어서 종료해버리면
cnt는 0이 되는데 문제에서는 1초후에 주식가격이 떨어지는 것을 1초는 유지했다고 보기 때문.
3. 맨마지막 원소는 비교할게 없으므로 고정값 0을 추가시켜줌
헷갈리시면 prices로 [1, 2, 3, 2, 3, 3, 1] 예제를 넣어서 계산해보세요 ~
전체코드
def solution(prices): ans=[] #prices의 원소 i와 i이후의 원소들을 비교해서 같거나 크면 cnt를증가 for i in range(len(prices)-1): cnt = 0 for j in range(i+1,len(prices)): if prices[i]<=prices[j]: cnt+=1 #i이후의 원소들중 작아지는 지점을 만나면 1을증가하고(1초는유지된것이므로) break else: cnt+=1 break ans.append(cnt) #맨마지막원소는 고정으로 0 ans.append(0) return ans print(solution([1, 2, 3, 2, 3, 3, 1]))
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Python] 전화번호 목록 | 초코더 (0) 2020.08.19 [프로그래머스 / Python] 기능개발 | 초코더 (0) 2020.08.18 [프로그래머스 / Python] 올바른 괄호 | 초코더 (0) 2020.08.18 [프로그래머스 / Python] 시저 암호 | 초코더 (1) 2020.01.19 [프로그래머스 / Python] 가장 큰 수 | 초코더 (0) 2020.01.09