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

minj-j·2022년 8월 18일
0

CodingTest

목록 보기
11/14

🐇 내가 한 풀이 [브루트 포스]

def solution(prices):
    answer = [0] * len(prices)

    for i in range(len(prices)):
        for j in range (i+1, len(prices)):
            if prices[i] <= prices [j]:
                answer[i] += 1
            else:
                answer[i] += 1
                break
    return answer

🌛 풀이흐름

for문을 돌려서 하나씩 꺼내서 다음 수와 비교
앞 수가 뒷 수보다 작으면 cnt+1증가시킨다
다음 앞수도 같이 봐서 앞수가 뒷수보다 작으면 cnt+1증가시킨다.
앞수가 뒷수보다 크기가 큰 경우는 1만 세준다.

Brute Force

무식하게 모든 경우의 수를 탐색하면서 요구조건에 충족되는 결과만을 가져오는 알고리즘

내가 생각한 풀이 흐름은 브루트 포스였다.
그냥 무식하게 모든 배열을 한 번씩 돌아보면서 하나하나 세는 방법
당연히 효율은 떨어질거라 생각했는데 역시 이 방법은 효율성이 떨어졌다.
그래서 원래 목적인 스택/큐로도 한 번 풀이보기로 했다.

Stack

스택은 가장 나중에 들어온 자료가 가장 먼저 처리되는 LIFO(Last-In-First-Out) 자료구조이다.
출구가 하나 밖에 없는 상자에 데이터를 차곡차곡 쌓는다고 생각하면 된다.

Stack 초기화

파이썬은 리스트로 스택을 흉내낸다고 한다.

# 빈 스택(리스트) 초기화
stack = []
stack

Stack에 데이터 넣기 push

stack = [1,2,3]
stack.append(4)

print(stack)

#결과
#[1,2,3,4]

Stack에 데이터 꺼내기 pop

stack = [1,2,3]
stack.pop()

print(top)
print(stack)

#결과
#3 제일 위에 있는 값이 꺼내진다.
#[1,2]

스택에서 원소를 제거하지 않고 가져오기만 할 때는 [-1]을 이용한다.

stack = [1,2,3]
top = stack[-1]

print(top)
print(stack)

#3
#[1,2,3]

Stack/Queue로도 풀이 해봐야지..(나중에 추가)

profile
minj-j`s Development diary!

0개의 댓글