문제
https://www.acmicpc.net/problem/22114
풀이
먼저 점프하지 않고 밟을 수 있는 보도블럭의 개수들을 count에 저장했다.
예제 입력 1을 예로 들어보면, N = 7, K = 3, L = [2 3 1 5 3 5] 이므로 Li가 3 이하라면 점프하지 않고 이동할 수 있다.
이 경우 점프하지 않고 밟을 수 있는 보도블럭의 개수는 다음과 같다.
- 4개 : 1번 블럭에서 출발 → 4번 블럭 도착 (4번에서 5번 블럭으로 가는 거리는 5이므로 점프 없이는 갈 수 없다)
- 2개 : 5번 블럭에서 출발 → 6번 블럭 도착 (6번에서 7번 블럭으로 가는 거리는 5이므로 점프 없이는 갈 수 없다)
- 1개 : 7번 블럭에서 출발
count = [4, 2, 1]
이때 점프를 단 한 번 해서 보도블럭을 최대로 밟고자 한다면, 4번에서 5번 블럭으로 가는 구간에서 점프를 해야 한다.
따라서, count를 먼저 구한 후, count의 연속된 두 원소의 합이 최대가 되는 것을 찾으면 그것이 최대 한 번의 점프로 밟을 수 있는 보도블럭의 최대 개수가 된다.
N, K = map(int, input().split())
L = list(map(int, input().split()))
count = [] # 점프하지 않고 밟을 수 있는 보도블럭 수 저장
temp = 1
for i in L :
if i <= K :
temp += 1
else :
count.append(temp)
temp = 1
count.append(temp)
answer = count[0] # 점프를 하지 않아도 되는 경우의 정답
# 한 번의 점프로 밟을 수 있는 보도블럭의 최대 수 구하기
for i in range(len(count)-1) :
answer = max(answer, count[i] + count[i+1])
print(answer)
728x90