Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- 맛집 투어
- 프로그래머스
- HTTP API
- 설탕 배달
- 투어
- 2020 KAKAO BLIND
- 서블릿
- 동적 프로그래밍
- 1로 만들기
- Spring
- 2589
- 쓰레드 풀
- 고모네 콩탕
- 문자열 압축
- BFS
- 다이나믹 프로그래밍
- 스프링 MVC
- Servlet
- 2638
- 완도산회
- 2839
- mvc
- dp
- 호유동
- 맛집
- 양꼬치
- 포두부 보쌈
- 스프링
- 알고리즘
Archives
- Today
- Total
프로그래밍 공방
[프로그래머스] 징검다리 건너기 본문
문제
programmers.co.kr/learn/courses/30/lessons/64062
문제해결방법
이 문제는 니니즈 친구들의 수를 기준으로 이진탐색을 해서 최대로 가능한 인원을 구해주었다.
코드
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 | package Programmers; public class Solution_징검다리건너기 { public static boolean isCross(int[] stones, int count, int k) { int stone = 0; for(int i=0; i<stones.length; i++) { if(stones[i]<count) stone++; else stone = 0; if(stone>=k) return false; } return true; } public static int solution(int[] stones, int k) { int s = Integer.MAX_VALUE; int e = Integer.MIN_VALUE; for(int i=0; i<stones.length; i++) { if(s>stones[i]) s = stones[i]; if(e<stones[i]) e = stones[i]; } while(s<=e) { int m = (s+e)>>1; if(isCross(stones, m, k)) s = m+1; else e = m-1; } int answer = s-1; return answer; } public static void main(String[] args) { int[] stones = {2, 4, 5, 3, 2, 1, 4, 2, 5, 1}; int k = 3; System.out.println(solution(stones, k)); } } | cs |
코드에 대한 피드백이나 더 좋은 아이디어는 언제나 환영입니다.
'개발 > 문제해결' 카테고리의 다른 글
[백준] 2623번 : 음악 프로그램 (0) | 2021.03.01 |
---|---|
[프로그래머스] 경주로 건설 (0) | 2021.02.28 |
[프로그래머스] 카드 짝 맞추기 (0) | 2021.02.21 |
[백준] 19235번 : 모노미노도미노 (0) | 2021.02.21 |
[백준] 19236번 : 청소년 상어 (0) | 2021.02.19 |