풀이
- 처음에는 두 번째 풀이처럼 접근을 했지만 2개의 시간초과로 인해 해결하지 못했다.
- 이유는 범위를 최대한 좁히려고 했지만
- 범위가 너무 넓은 배열을 2중 for문이기에 좁혀도 무리가 있었던것 같다.
- 그래서 첫 번째 풀이처럼 deque를 활용해서
- 우선 q가 있는지 그리고 q의 첫 번째 값의 숫자가 지금 조회하는 num보다 큰지 확인하여
- 그렇다면 q의 첫 번째 인덱스에 해당하는 result에 현재의 num을 적용하며 해결
from collections import deque
def solution(numbers):
result = [-1]*len(numbers)
q = deque([(numbers[0],0)])
for i,n in enumerate(numbers[1:]):
while q and q[0][0]<n:
_,idx = q.popleft()
result[idx] = n
q.appendleft((n,i+1))
return result
'알고리즘' 카테고리의 다른 글
[프로그래머스, 파이썬] 숫자 짝꿍 (0) | 2024.03.07 |
---|---|
[프로그래머스, 파이썬] 소수 찾기 (0) | 2024.03.07 |
[프로그래머스, 파이썬] 체육복 (0) | 2024.03.05 |
[프로그래머스, 파이썬] 대충 만든 자판 (1) | 2024.03.05 |
[프로그래머스, 파이썬] K번째수 (0) | 2024.03.04 |