https://school.programmers.co.kr/learn/courses/30/lessons/42584
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코딩테스트 고득점 Kit (스택/큐) - Level 2. 주식 가격
접근 방식
1. prices를 queue에 집어넣는다.
2. 하나씩 popleft 하면서, queue에 존재하는 가격을 하나 확인할 때마다 time을 1씩 증가시킨다.
3. 2를 실행하면서, queue에 존재하는 가격이 popleft한 가격보다 작을 경우 break 하고, answer에 time을
append한다.
def solution(prices) :
answer = []
for i in range(len(prices)-1) :
k = min(prices[i:len(prices)])
if prices[i] > k :
answer.append(prices.index(i,k)-i)
else:
answer.append(len(prices)-1-i)
answer.append(0)
return answer
1. 현재 인덱스보다 뒤부터 끝까지 리스트를 확인하면서 min값을 찾는다.
2. 그 후, min값과 인덱스 값을 비교하여서.....
처음에 절대 반복문 2번을 돌기 싫어서 이렇게 만들었는데, 런타임 오류가 발생했다.
학교 다닐 때 자바 과제를 하다가 for문 두번을 돌기 싫어서 frequency를 사용한 적 있었는데.. 그때랑 비슷한 상황인 거 같았다. 바른 길 두고 삐이잉 돌아가다가 더 안 좋은 결과를 맞이함.. 다시 짜자!
def solution(prices) :
answer = []
q = deque(prices)
while len(q) > 0 :
pop_price = q.popleft()
time = 0
for price in q :
time+=1
if pop_price > price:
break
answer.append(time)
return answer
머리를 비우고... 스택/큐 문제니까 큐를 사용해서... 어쩔 수 없이 for문을 두 번 돌아서 풀었는데 런타임 오류가 안 뜬다....
위의 코드는 얼마나 쓰레기인걸까? 감도 안 오네 아마 O(n^3)인 것 같다.
요행을 바라면 안 된다지만 자꾸 바라고 싶어진다...
코딩 잘하는 사람 커비 마냥 와앙 삼켜서 한순간에 잘하고 싶다
말도 안 되니까 열심히 공부하자.. 언젠가 되겠지
'알고리즘 > Python' 카테고리의 다른 글
[프로그래머스] 파이썬 - 주차 요금 계산 (0) | 2023.07.21 |
---|---|
[프로그래머스] 파이썬 - 실패율 (0) | 2023.07.19 |
[프로그래머스] 파이썬 - 의상 (0) | 2023.07.07 |
[프로그래머스] 파이썬 - 전화번호 목록 (0) | 2023.07.01 |
[프로그래머스] 파이썬 - 가장 큰 수 (0) | 2023.06.27 |