해당 문제는 프로그래머스에서 제공하는 문제에 대한 개인적인 풀이입니다.


더 좋은 방법이 있거나 의견이 있으신분은 댓글 주시면 자유롭게 의견교환 하실 수 있습니다.




이번에 풀어본 문제는 주식가격이라는 문제입니다.


초단위당 주식 가격이 리스트로 매개변수로 주어질 때 각 시간에 주식가격이 유지된 기간이 몇 초인지 return 하는 함수를 작성하는 문제입니다.


문제에서 제한 사항이 주어졌지만, 혹시 주어지지 않았다면 면접시에는 수의 범위나 리스트의 대략적인 크기에 대해서 물어보시면 더욱 좋을 것 같습니다.



여기서 저는 가격이 유지된다는 의미를 가격이 아예 같다라는 의미로 받아들였는데 예시를 보니 하락 하지 않은 상태를 의미하는 것 이었습니다.





해당 문제에 대한 제 코드입니다.


먼저, 가격이 유지되었는지 확인하는 부분은 비교해보는 방법 뿐이고, 필요한 연산을 위해서 첫번째 for 루프에서 이미 계산한 index를 제외하고 시작하는 index라는 표현을 하기위해서 start라고 변수명을 지어서 사용했습니다. 


두 번째 for loop에서 


1) 유지되어 있는 기간을 찾으면 더 이상 비교해볼 필요가 없으모로 break 를 사용해서 그 당시에 index에서 start를 빼줘서 유지되는 기간을 반환할 리스트에 더해줬습니다.


2) 계속 유지된 경우라면 마지막 for loop에서 i-start가 유지된 기간이 되므로 아래와 같이 작성하면 코드가 조금 더 간결해질 것 이라고 생각했습니다.





복사 가능한 코드


def solution(prices: list) -> list:

    answer = []

    for start in range(0, len(prices)):

        pivot = prices[start]

        for i in range(start, len(prices)):

            if prices[start] > prices[i]:

                break

        answer.append(i-start)

    return answer




읽어 주셔서 감사합니다. 


조언이나 피드백은 언제나 환영입니다.


  1. ㅎㅈ 2019.01.07 15:20 신고

    글 올려주셔서 고마운데 여러군데 봐도 설명이 이해가 안 되는 제 머리....ㅠ pivot 변수는 등장 이후 안 쓰인거 같은데 왜 필요한건가요...ㅠ

+ Recent posts