본문 바로가기
Study☆/Computer Science

프로그래머스 - 주식가격(Level 2)

by JJORIO 2020. 12. 9.
728x90
반응형

프로그래머스 - Level 2 주식가격

문제 설명

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.

 

제한사항

  • prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.

  • prices의 길이는 2 이상 100,000 이하입니다.

입출력 예

prices

return

[1, 2, 3, 2, 3]

[4, 3, 1, 1, 0]

 

입출력 예 설명

  • 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.

  • 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.

  • 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.

  • 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.

  • 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.

 


문제풀이

예시에 대한 설명이 부실해서 그런지 살짝 어려워보였지만 사실은 쉬운 문제라고 생각한다. 이 문제를 풀기 위해서 가장 먼저 '가격이 떨어지지 않은 기간' 이라는 말을 이해해야하는데, 가격이 떨어지지 않은 기간은 자신의 값의 미만이 되지 않으면 된다는 것이다.

이를 바탕으로 예시를 보았다.

배열의 첫번째항 1은 1보다 작은 값이 없으므로 4

두번째 항에서 이후에 2보다 작은 값이 나오지 않으므로 3

세번째 항에서 3보다 작은 값이 바로 다음에 나오므로 1

네번째 항의 2에서는 다음 값이 3보다 크지만 마지막 항이므로 1

다섯번째 항은 끝이니까 0이다.

이것을 바탕으로 코드를 작성해보았다.

def solution(prices):
    answer = []
    
    for x in range(0, len(prices)):
        
        value = 0
        
        for y in range(x + 1, len(prices)):
            if prices[x] <= prices[y]:
                value += 1
            
            else:
                value += 1
                break
        answer.append(value)
        
    
    return answer

 

이중 for문을 사용해 현재 항의 값과 다음 값들을 비교해서 가격이 떨어지는데 얼마나 걸리는 지를 구하였다. 코드 자체는 심플해서 딱히 해석이 필요하지는 않을 것같다.

 

문제에 대한 생각

문제 해석이 전부 다인 문제다. 맨 처음에 이중 for문을 사용하면 시간 초과가 생기지 않을까 걱정했는데 의외로 시간초과가 생기지 않아서 다행이였다. 대부분의 사람이 가장 먼저 떠올린 방법이 이 방법이 아닐까 생각이 된다.

 

728x90
반응형