728x90
https://school.programmers.co.kr/learn/courses/30/lessons/64062
돌의 점수를 계산할게 아니라
건널 수 있는 사람의 인원수를 이진탐색으로 체크하는 문제
def solution(stones, k):
left = 1
right = 200000000
while left <= right:
mid = (left + right) // 2
print(left, right, mid)
count = 0
for stone in stones:
if stone <= mid:
count += 1
else:
count = 0
if count >= k:
break
if count >= k:
right = mid - 1
else:
left = mid + 1
return left
효율성 해결 못 한 코드
def solution(stones, k):
answer = 0
while True:
jump_flag = True
target = 0
while True:
if stones[target] == 0:
next_jump_flag = False
for j in range(1, k):
if target + j < len(stones) and stones[target + j] != 0:
stones[target + j] -= 1
target += j
next_jump_flag = True
break
elif target + j == len(stones):
next_jump_flag = True
target += j
break
if next_jump_flag is False:
jump_flag = False
break
else:
stones[target] -= 1
if target >= len(stones) - 1:
target = -1
answer += 1
target += 1
if jump_flag is False:
break
return answer
728x90
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스 LV 2] 이모티콘 할인행사 (파이썬/python) (0) | 2023.02.08 |
---|---|
[프로그래머스 LV 2] 개인 정보 수집 유효기간 (파이썬 / python) (0) | 2023.01.20 |
[ 프로그래머스 LV 2 ] 주차 요금 계산 (파이썬 / python) (0) | 2022.10.18 |
[프로그래머스 LV 1] 성격 유형 검사하기 (파이썬/python) (0) | 2022.10.14 |
[프로그래머스 LV 2] k진수에서 소수 개수 구하기 (파이썬/p (0) | 2022.06.15 |