[프로그래머스] LEVEL2 주식가격

문제 설명

초 단위로 기록된 주식 가격이 담긴 배열 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을 더해주는 방식은 생각을 못했다. 다양한 풀이가 있어서 많은 참고를 할 수 있었다. 

<