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
29
30
31
32
33
34
35
36
37
package programmers;
 
public class 징검다리건너기 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] stones = {2453214251};
        int k = 3;
        
        int low = 1;
        int high = 200000001;
        int mid = 0;
        
        
        while(low<=high) {
            int count = 0;
            mid = (low + high)/2;
            for(int i=0; i<stones.length; i++) {
                if(stones[i] - mid <=0)
                    count++ ;
                else
                    count=0;
                if(count>=k) {
                    high = mid-1;
                    break;
                }
            }//
            if(count<k) {
                low = mid+1;
            }
        }
        System.out.println(low);
        
    }
 
}
 
cs

이 문제는 https://cjh5414.github.io/binary-search/

 

이진 탐색(Binary Search) 알고리즘 개념 이해 및 추가 예제

Jihun's Development Blog

cjh5414.github.io

https://ksdyoung.tistory.com/69

 

징검다리 건너기 프로그래머스(c++)

문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오 초등학교의 니니즈 친구들이 라이언 선생님과 함께 가을 소풍을 가는 중에 징검다리가 있는 개울을 만나서 건너편으로 건너려..

ksdyoung.tistory.com

참고해서 해결했다. 

 

결과적으로 봤을 때는 

https://tech.kakao.com/2020/04/01/2019-internship-test/

 

2019 카카오 개발자 겨울 인턴십 코딩 테스트 문제 해설

“2019년 카카오 개발자 겨울 인턴십” 공개 채용을 위한 1차 코딩 테스트가 지난 2019년 11월 9일 오후 2시부터 6시까지 총 4시간에 걸쳐 진행되었습니다. ’19년 신입공채 1차 코딩 테스트 시에 7문제가 출제되고 5시간의 풀이 시간이 주어졌던 것과는 달리 이번 인턴 코딩 테스트는 5문제가 출제되고 4시간의 풀이 시간이 주어졌습니다. 인턴의 경우 신입 공채와는 달리 인턴 과정을 통해 추가 검증을 하기 때문입니다. 이전과 동일하게 쉬운 문제를 앞쪽

tech.kakao.com

 

내용에서 가이드라인이 제시되어 있다. 

범위가 1~200,000,000 이기 때문에 초기값을 설정하고 

mid = (시작+끝)/2 가 돌다리를 건널 수 있는 인원이다.

돌다리 개수(=k) 개가 0이 되는 연속된 개수를 파악한다. 

0이 연속된 개수가 k개를 넘게 되면 돌다리를 건널 수 없는 범위가 되기 때문에 끝을 mid-1로 변경하고 반대로 돌다리를 건널 수 있다면 mid+1 로 변경해서 최종적으로는 시작이 끝보다 커지면 최대의 인원이 돌다리를 건널 수 있게 되는 경우이다. 

 

이분탐색 문제를 오랜만에 봐서 감이 없었다. 하핳... 어렵네