본문 바로가기
Algorithm/Programmers

[프로그래머스] 코딩테스트 고득점 Kit > 주식가격

by du.it.ddu 2020. 3. 18.
반응형

# 문제

# 문제 접근

가격이 떨어지지 않았다는 것은 배열의 한 시점을 기준으로 뒤로 갈 수록 현재 시점보다 가격이 낮은 순간이 있는지를 판단하면 된다.

주의할 부분은, 3초 시점의 3은 바로 다음의 4초에 2로 떨어졌으나, 1초 간 가격이 유지 된 것으로 판단하여 떨어지지 않은 것으로 본다는 것이다. 바로 다음 시점에 가격이 떨어져도 1초간 가격은 유지가 된 것이다.

# 문제 풀이

1. 배열의 처음부터 끝까지 루프를 돌린다. (i)

2. 현재 배열의 위치부터 다음 위치까지 루프를 돌린다. (j)

3. 인덱스 j가 증가하면 현재 시점의 카운트를 1 늘린다.(위에서 주의했듯이 바로 다음 순간에 떨어져도 1초간 가격이 유지 된 것이기 때문.)

4. 배열의 i 인덱스의 값이 배열의 j 인덱스 값보다 크면 시점이 떨어진 것이다. 루프를 중단하고 i를 증가시킨다.

5. 위 과정을 반복한다.

# 코드 작성

def solution(prices):
    LEN = len(prices)
    answer = [0] * LEN
    
    # 처음부터 끝까지 루프를 돌린다.
    for i in range(LEN) :
        # i 위치의 바로 다음부터 끝까지 루프를 돌린다.
        for j in range(i+1, LEN) :
            # 현재 i위치의 값을 1 증가한다.
            answer[i] += 1
            # i 위치의 주식의 값이 j 위치의 주식의 값보다 크다는 것은 가격이 감소했다는 것.
            # 루프를 멈추고 i를 증가시켜 반복한다.
            if prices[j] < prices[i] :
                break
            
    # 결과를 반환한다.
    return answer

 

 * 본 문제의 출처는 프로그래머스(https://programmers.co.kr/) 입니다. 문제가 될 시 삭제하겠습니다.

반응형