Algorithms
Softeer: 징검다리2
반응형
import sys
import bisect
N = int(sys.stdin.readline())
stones = list(map(int, sys.stdin.readline().split()))
def find_list(stones):
values = []
forward = [0]*N
for i, stone in enumerate(stones):
if not values:
values += stone,
forward[i] = len(values)
continue
if values[-1] < stone:
values += stone,
forward[i] = len(values)
continue
idx = bisect.bisect_left(values, stone)
values[idx] = stone
forward[i] = idx + 1
return forward
forward = find_list(stones)
backward = find_list(stones[::-1])
mx = 0
for i in range(N):
felem = forward[i]
belem = backward[N - 1 - i]
if not felem or not belem:
continue
mx = max(mx, felem + belem - 1)
print(mx)
반응형
'Algorithms' 카테고리의 다른 글
softeer: 동계 테스트 시점 예측 (0) | 2021.12.22 |
---|---|
Softeer: H-클린알파 (0) | 2021.12.22 |
[알고리즘] 위상정렬 코드 (topological sort) for DAG (Directed acyclic graph) (0) | 2018.03.18 |
[알고리즘] 미로 최단 경로 찾기 (finding the shortest path in a maze) (0) | 2018.03.18 |
[알고리즘] graph cycle 여부 판단 알고리즘 (undirected 용) (0) | 2015.07.05 |
댓글