[프로그래머스] 징검다리 건너기

joon_1592·2022년 5월 6일
0

알고리즘

목록 보기
41/51

학생 마다 매번 징검다리를 시뮬레이션하면 끝이 없다.
stones의 최댓값이 200,000,000 이고 배열의 길이가 200,000 이므로 시간초과난다. 바로 여기서 이분탐색 아이디어를 떠올릴 수 있다

def CrossTest(stones, k, T):
    count = 0 # 연속으로 징검다리 돌의 값이 0인 개수
    ret = True
    for stone in stones:
        if stone < T:
            count += 1
        else:
            count = 0
        if count == k:
            ret = False
            break
    return ret

def solution(stones, k):
    answer = 0
    N = len(stones)
    start, end = 0, 200000000
    while start <= end:
        mid = (start + end) // 2
        if CrossTest(stones, k, mid):
            answer = mid
            start = mid + 1
        else:
            end = mid - 1
        
    return answer
profile
공부용 벨로그

0개의 댓글