728x90
풀이
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
A = list(map(int, input().split()))
strong = 0
answer = []
# 시야 초기 max 값 설정
strong = max(A[:M*2-1])
answer.append(strong)
i, j = 1, M*2-1
while j != N:
if strong != A[i-1]:
if strong < A[j]:
strong = A[j]
else:
strong = max(A[i:j+1])
answer.append(strong)
i+=1
j+=1
print(*answer)
- 정답은 strong 배열에 저장했고, 시간(1초)마다 보이는 홍준의 시야에서 가장 큰 불빛은 strong 변수에 넣었다.
- i, j는 A 배열을 가리키는 포인터이다. i~j까지가 홍준의 시야 범위이다.
- 1초마다 i와 j를 +1해주며 그 시점에서 가장 강한 불빛을 찾아 strong에 저장한다.
이때, i-1번째 불빛이 가장 강했다면 현재 가장 강한 불빛을 다시 찾아야하므로 max 함수와 슬라이싱을 사용하여 strong을 찾았다.
i-1이 strong이 아니라면 아직 홍준의 시야 범위 내에 있는 다른 불빛이 가장 강했다는 뜻이므로 strong과 시야에 새로 들어온 A[j] 불빛을 비교하여 큰 불빛을 strong 변수에 넣어준다. - while 반복문은 전체 배열 범위를 넘어서기 전까지 반복한다.
- *answer을 사용하여 배열을 괄호없이 출력한다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 / 큐] 10828 : 스택 (python) (0) | 2024.03.19 |
---|---|
[백준 / 큐] 1966 : 프린터 큐 (python) (0) | 2024.03.19 |
[백준 / 투 포인터] 2003 : 수들의 합 2 (python) (3) | 2024.03.17 |
[백준 / DP] 1253 : 좋다 (python) (0) | 2024.03.15 |
[백준 / 구간 합 구하기] 11660 : 구간 합 구하기 5 (python) (1) | 2024.03.14 |