-코드
n, l, w, h = map(int, input().split())
start, end = 0, min(l, w, h)
for _ in range(100):
mid = (start + end) / 2
a = (l // mid) * (w // mid) * (h // mid)
if a < n:
end = mid
else:
start = mid
print('%.10f' % start)
처음에는 루트를 통해서 풀려고 했지만 입출력이 다르게 나오는 것이 있어서 보니 이분 탐색 문제였습니다. 그래서 이분 탐색을 하는데 end를 무엇으로 잡는지와 무엇으로 크기를 구하는지를 완전히 이해를 하지 못해서 게시판 등을 찾아보고 썼으나 mid + 1과 mid - 1로 값을 변경해주는 부분에서 계산이 이상해지고 while을 사용하니 값이 또 이상해져서 찾아보니 for문으로 해결이 가능했고 소수점 문제도 생겨서 따로 설정하여 해결을 하였습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 1072번 게임 (0) | 2022.01.04 |
---|---|
[백준/파이썬] 2495번 연속구간 (0) | 2022.01.04 |
[백준/파이썬] 23809번 골뱅이 찍기 - 돌아간 ㅈ (0) | 2022.01.03 |
[백준/파이썬] 23810번 골뱅이 찍기 - 뒤집힌 ㅋ (0) | 2022.01.02 |
[프로그래머스/파이썬] [1차] 비밀지도 (0) | 2022.01.01 |