배운 것

징검다리 건너기

세발낙지 2022. 5. 30. 00:10

프로그래머스 Lv.3 이진탐색으로 풀이한 문제인 징검다리 건너기 문제입니다.

 

해당 문제의 링크입니다.

 

 

코딩테스트 연습 - 징검다리 건너기

[2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3

programmers.co.kr

각 징검다리는 한명이 건너게 되면 건널 수 있는 사람의 수가 줄어들게 되며, 0이 되면 더 이상 해당 징검다리를 건널 수 없습니다. 사람들은 k개의 징검다리를 건너뛸 수 있으므로 k개 이상이 연속으로 0이 되면, 건널 수 없게 됩니다. 징검다리의 배열의 길이는 200,000까지 되며, 200,000,000까지의 값을 가질 수 있으므로 이진탐색으로 풀이해야 함을 유추할 수 있습니다. 

 

check 함수를 선언한 후, 이를 이용해 이진 탐색 코드를 작성하였다.

def solution(s, k):
    def check(n):
        temp = 0
        for idx in range(len(s)):
            if s[idx] > n:
                temp = 0
            else:
                temp += 1
            if temp >= k:
                return False
        return True
    left = 0
    right = 200000000
    while left < right:
        mid = (left+right)//2
        if check(mid):
            left = mid+1
        else:
            right = mid
    return left

'배운 것' 카테고리의 다른 글

자바스크립트의 this란?  (0) 2022.06.06
타입스크립트 데코레이터  (0) 2022.06.01
프로그래머스 지형 이동  (0) 2022.05.27
프로그래머스 자물쇠와 열쇠  (0) 2022.02.03
프로그래머스 등굣길  (0) 2022.01.26