본문 바로가기
알고리즘/프로그래머스

주식가격

by 1.5볼트 2023. 4. 1.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/42584

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

릿 코드인가
언제 한번 풀어본 거 같다 이런 문제 그때 알았던 스택
스택을 모르면 일반적으로 시간 복잡도가 n**2라는 비효율적인 결과가 나온다
핵심은 지금 수보다 큰 수가 언제 나오는지이다
하나씩 스택에 쌓다가 제일 마지막 보다 큰 수가 나오면 마지막보다 작아질 때까지 스택에서 마지막 수를 계속 빼준다
어차피 큰 수를 만나면 그보다 작은 건 다 제거되기 때문에 정렬이나 순서는 신경 쓰지 않아도 된다
다만 스택에 인덱스도 같이 넣어서 제거되는 숫자에 인덱스를 확인해 그 인덱스 번호의 값을 바꿔준다

def solution(p):
    t=[]
    s=list(range(len(p)-1,-1,-1))
    for n,i in enumerate(p):
        while t and t[-1][0]>i:
            s[t.pop()[1]]=n-t[-1][1]
        t.append([i,n])
    return s

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

과제 진행하기  (0) 2023.04.03
저자 별 카테고리 별 매출액 집계하기  (0) 2023.04.02
영어 끝말잇기  (0) 2023.03.31
이진 변환 반복하기  (0) 2023.03.28
다단계 칫솔 판매  (0) 2023.03.27

댓글