Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.3 징검다리 건너기 [Python, 파이썬] KAKAO 본문
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/64062
- 🔑 이진 탐색
- 처음 풀이는 k 크기의 슬라이딩 윈도우로 각 윈도우의 최댓값을 저장하고 그중 최솟값을 반환했다.
- 정확성은 다 맞지만 효율성이 집에 가라고 했다.
- 그래서 이진 탐색으로 풀이를 했다.
- mid 명이 건너면서 연속으로 k개가 부서졌으면 사람 수를 줄였다.
- 무사히 건널 수 있으면 사람 수를 늘려서 최대로 몇 명이 건널 수 있는지를 구했다.
def solution(stones, k):
l = 1
r = 200_000_000
while l <= r:
mid = (l + r) // 2 # 몇 명이 건너볼까?
cnt = 0 # 부서진 돌 개수 카운트
for stone in stones:
if stone - mid <= 0: # 부서졌으면
cnt += 1 # 개수 올린다.
else: # 안 부서졌으면
cnt = 0 # 개수 초기화 (연속으로 k 개가 부서져야 못 건너니까)
if cnt >= k: # 연속으로 k 개가 부서졌으면 못 건너니까
r = mid - 1 # 사람 수를 줄이고
break # 멈추자
else: # 건널 수 있으면 (break 안 걸렸으면)
l = mid + 1 # 사람 수를 늘려보자 (최대를 구해야 하므로)
return l
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.2 수식 최대화 [Python, 파이썬] KAKAO (0) | 2023.10.11 |
---|---|
[프로그래머스] Lv.2 괄호 변환 [Python, 파이썬] KAKAO (1) | 2023.10.10 |
[프로그래머스] Lv.1 키패드 누르기 [Python, 파이썬] KAKAO (1) | 2023.10.09 |
[프로그래머스] Lv.2 [3차] 방금그곡 [Python, 파이썬] KAKAO (1) | 2023.10.08 |
[프로그래머스] Lv.2 메뉴 리뉴얼 [Python, 파이썬] KAKAO (1) | 2023.10.07 |
Comments