본문 바로가기
알고리즘/소스코드

PROGRAMMERS 64062: 징검다리 건너기

by cjw.git 2021. 1. 25.

Link : programmers.co.kr/learn/courses/30/lessons/64062


Python (성공 소스)

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def calcZero(arr, m):
    max_zero = 0
    zero = 0
    for i in range(len(arr)):
        if arr[i] - m <= 0:
            arr[i] = 0
            zero += 1
            if zero > max_zero:
                max_zero = zero
        else:
            zero = 0
    return max_zero
 
 
def solution(stones, k):
    s = min(stones)
    e = max(stones)
    while s < e:
        m = (s + e) // 2
        zero_cnt = calcZero(stones[:], m)
        if zero_cnt >= k:
            e = m 
        elif zero_cnt < k:
            s = m + 1
 
    return s
cs

Python (실패 소스)

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def solution(stones, k):
    result = 0
    while True:
        for i in range(len(stones)):
            if stones[i] - 1 <= 0:
                stones[i] = 0
            else:
                stones[i] -= 1
        zero = 0
        result += 1
        for i in range(len(stones)):
            if stones[i] == 0:
                zero += 1
                if zero >= k:
                    return result
            else:
                zero = 0
cs

FeedBack

  1. 성공 소스는 이분탐색으로 수행하였고 실패소스는 완전 탐색으로 진행하였습니다.

 

 

 

cjw.git@gmail.com

댓글