[백준][파이썬] 22114번. 창영이와 점프

문제

https://www.acmicpc.net/problem/22114

 

풀이

먼저 점프하지 않고 밟을 수 있는 보도블럭의 개수들을 count에 저장했다.

예제 입력 1을 예로 들어보면, N = 7, K = 3, L = [2 3 1 5 3 5] 이므로 Li가 3 이하라면 점프하지 않고 이동할 수 있다.

이 경우 점프하지 않고 밟을 수 있는 보도블럭의 개수는 다음과 같다.

  1. 4개 : 1번 블럭에서 출발 → 4번 블럭 도착 (4번에서 5번 블럭으로 가는 거리는 5이므로 점프 없이는 갈 수 없다)
  2. 2개 : 5번 블럭에서 출발 → 6번 블럭 도착 (6번에서 7번 블럭으로 가는 거리는 5이므로 점프 없이는 갈 수 없다)
  3. 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