문제 설명
초 단위로 기록된 주식 가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
풀이
# for i in range(len(a)-1):
# print(i,i+1)
# if a[i] > a[i+1]: # 현재 주식이 다음 주식보다 가격이 낮다면 배열에 1추가
# answer.append(1)
# else: # 주식이 더 높다면 배열 크기에 주식의 인덱스 값 +1 한 값을 빼준 후 배열에 추가
# answer.append(len(a)-(i+1))
# answer.append(0) # 마지막 주식은 가격변동이 없으니 제일 마지막 배열에 0 추가
# print(answer)
for i in range(len(a)-1):
for j in range(i,len(a)-1):
if a[i] > a[j]:
break
else:
answer[i] += 1
print(answer)
느낀 점
이 문제는 스택이나 큐를 이용해서 해결할 수 있는 문제이다. 코드를 보면 주석처리가 된 코드로 문제를 해결하려고 했는데 테스트 케이스 1번에서 바로 실패가 나왔고 효율성은 전부 탈락했다. 2중 for문에서 각 배열에 접근하는 방법을 제대로 알지 못해서 생긴 문제였다. 그리고 현재 주식이 다음 주식보다 크면 for 문을 벗어나고 작으면 0으로 채운 answer 배열에 +1을 더해주는 방식은 생각을 못했다. 다양한 풀이가 있어서 많은 참고를 할 수 있었다.
'Algorithm' 카테고리의 다른 글
[BOJ/백준] 9461번 파도반 수열 (0) | 2020.12.20 |
---|---|
[BOJ/백준] 1110번 더하기 싸이클 (0) | 2020.12.18 |
[BOJ/백준] 1436번 영화감독 숌 (0) | 2020.12.15 |
[BOJ/백준] 1018번 체스판 다시 칠하기 (0) | 2020.12.15 |
[이코테] 최단 경로 알고리즘 - 전보 (0) | 2020.12.15 |