프로그래머스 - 주식가격

박상진·2022년 3월 3일
0

프로그래머스

목록 보기
58/65

자세한 설명은 링크 참고

각 요소값을 1초로 생각하여 몇초동안 이 가격이 떨어지지 않는지 구하는 문제이다.

설명

prices = [1, 2, 3, 2, 3]
return = [4, 3, 1, 1, 0]
각 요소값보다 작은 숫자가 등장하는 시간이 언제인지를 구하는 문제라고 생각하면 편하다.

예를들어 0번째 요소값인 1보다 작은 숫자는 없기 때문에 끝까지 유지되어 0번째 요소값부터 1번째 요소값까지를 1초로 생각하고 마지막 요소값까지 4초를 유지하게 된다.
이런 방식으로 각각의 숫자 미만의 숫자가 나올때까지의 시간을 구하면된다.
그리고 마지막에는 유지되는 시간이 없기 때문에 0을 출력하면 된다.

풀이

def solution(prices):
    answer = []
    for i in range(len(prices)) :
        se = 1
        len_p = len(prices)
        while True :
            if i+se == len_p :
                if se == 1 :
                    answer.append(0)
                else :
                    answer.append(se-1)
                break
            elif prices[i] > prices[i+se] :
                answer.append(se)
                break
            elif prices[i] <= prices[i+se] :
                se += 1
                continue
    return answer

이게 왜 됨? 아무튼

  1. 0번째 값이 1번째 값 보다 크다면 se1을 더해줘서 다음 요소값을 호출하게 한다.
    • 만약 언제가 올 다음 값이 0번째 요소값보다 작아진다면 se값을 그대로 answer로 넣어준다.
  2. if i+se == len_p :
    • se자체가 prices의 길이와 같을 경우에는 리스트 전체가 끝까지 돌아간 경우이기 때문에 0을 넣어주고 마무리한다.
    • 아닌 경우에는 끝까지 자신보다 작은 값을 찾지 못한 경우이기 때문에 마무리가 된다.
      - 이 경우 자기자신은 0초이기 때문에 1을 빼준다.

느낀점

수학적인 능력이 부족한지 헷갈리는 부분이 많은 느낌이다.
지경이 넓어지기 위해 힘들더라도 열심히 해봐야겠다.

profile
개발자가 되고싶당

0개의 댓글