# 문제
# 문제 접근
가격이 떨어지지 않았다는 것은 배열의 한 시점을 기준으로 뒤로 갈 수록 현재 시점보다 가격이 낮은 순간이 있는지를 판단하면 된다.
주의할 부분은, 3초 시점의 3은 바로 다음의 4초에 2로 떨어졌으나, 1초 간 가격이 유지 된 것으로 판단하여 떨어지지 않은 것으로 본다는 것이다. 바로 다음 시점에 가격이 떨어져도 1초간 가격은 유지가 된 것이다.
# 문제 풀이
1. 배열의 처음부터 끝까지 루프를 돌린다. (i)
2. 현재 배열의 위치부터 다음 위치까지 루프를 돌린다. (j)
3. 인덱스 j가 증가하면 현재 시점의 카운트를 1 늘린다.(위에서 주의했듯이 바로 다음 순간에 떨어져도 1초간 가격이 유지 된 것이기 때문.)
4. 배열의 i 인덱스의 값이 배열의 j 인덱스 값보다 크면 시점이 떨어진 것이다. 루프를 중단하고 i를 증가시킨다.
5. 위 과정을 반복한다.
# 코드 작성
def solution(prices):
LEN = len(prices)
answer = [0] * LEN
# 처음부터 끝까지 루프를 돌린다.
for i in range(LEN) :
# i 위치의 바로 다음부터 끝까지 루프를 돌린다.
for j in range(i+1, LEN) :
# 현재 i위치의 값을 1 증가한다.
answer[i] += 1
# i 위치의 주식의 값이 j 위치의 주식의 값보다 크다는 것은 가격이 감소했다는 것.
# 루프를 멈추고 i를 증가시켜 반복한다.
if prices[j] < prices[i] :
break
# 결과를 반환한다.
return answer
* 본 문제의 출처는 프로그래머스(https://programmers.co.kr/) 입니다. 문제가 될 시 삭제하겠습니다.
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 코딩테스트 고득점 Kit > 쇠막대기 (0) | 2020.03.18 |
---|---|
[프로그래머스] 코딩테스트 고득점 Kit > 탑 (0) | 2020.03.18 |
[프로그래머스] 코딩테스트 고득점 Kit > H-Index (0) | 2020.03.07 |
[프로그래머스] 코딩테스트 고득점 Kit > 가장 큰 수 (0) | 2020.03.07 |
[프로그래머스] 코딩테스트 고득점 Kit > K번째수 (0) | 2020.03.07 |