공부하는 스누피
[Python] 징검다리 건너기 - Sliding Window 본문
programmers.co.kr/learn/courses/30/lessons/64062#qna
(효율성 통과 x)
생각과정
- 길이가 k인 창문을 움직이는 방식으로 슬라이딩 윈도우를 구현했다.
- 처음 위치의 창문 영역의 최댓값, 최솟값을 구한다.
- 이동 전 첫번째 값이 최댓값이면 창문 영역의 최댓값을 새로 구한다.
- 아니라면, 저장된 최댓값과 영역에 새로 들어온 값을 비교 후 큰 값을 최댓값으로 한다.
- 창문 영역의 최댓값과 처음 연산한 최댓값을 비교 후 작은 값을 저장하고, 다음부터는 저장된 값과 비교한다.
구현
import sys
def solution(stones, k):
answer = 0
start = 0
end = k
maxi = max(stones[start:end])
mini = min(stones[start:end])
counts = maxi
start = 1
end = k+1
while end <= len(stones):
if stones[start-1] == maxi:
maxi = max(stones[start:end])
if stones[start-1] == mini:
mini = stones[start]
if stones[end-1] > maxi:
maxi = stones[end-1]
if stones[end-1] < mini:
mini = stones[end-1]
counts = min(counts, maxi)
start += 1
end += 1
answer = counts
return answer
결과
참고
'Algorithms > 코딩테스트 문제풀이' 카테고리의 다른 글
[JAVA] 사칙연산 유효검사 - Binary Tree (0) | 2021.02.10 |
---|---|
[Python] 줄 세우기 - 위상 정렬 (0) | 2020.09.23 |
[Python] 압축 - 문자열 (0) | 2020.08.31 |
[Python] 1로 만들기 - DP (0) | 2020.08.30 |
[Python] 베스트앨범 - Hash (0) | 2020.08.28 |
Comments