• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

while문안에 if문 조건설정시 기준을 잘 모르겠습니다.

22.07.02 23:43 작성 조회수 203

0

혼자 풀면서 처음에 이런식으로 작성해서 답이 나왔습니다.
 
# 정답코드
if putt(mid) >= c:
        res = mid
        lt = mid + 1
    else :
        rt = mid - 1
 
# 왜안되는지 모르는 코드
if putt(mid) <= c:
        res = mid
        rt = mid - 1
    else :
        lt = mid + 1
 
근데 putt(mid)가 c보다 작을 때 rt를 변화시켜주는 것, 즉
마구간의 일정거리를 더 가깝게 하는 것으로 변화시켜간다면
어떻게 될지 궁금해서 아래와 같이 코드를 작성해봤는데
답이 2가 나왔습니다.
제가 지금 생각하기로는 위 코드와 아래코드의 차이는
1. 거리가 좁아서 cnt가 c보다 클 때 lt를 조정시켜 점점
크게 만들어주는 방법
2. 거리가 넓어서 cnt가 c보다 작을 때 rt를 조정시켜 점점
작게 만들어주는 방법
이 두가지 인데 이 두가지를 선택하는 기준과 왜 답이 다른지
잘 모르겠습니다.
 
 

답변 1

답변을 작성해보세요.

0

안녕하세요^^

putt에 매개변수로 넘어가는 mid는 가장 가까운 두 말의 거리라고 생각하고 putt로 넘어가는 것입니다.

그리고 putt은 mid 거리로 말을 배채했을 때 배치할 수 있는 말의 수를 리턴하는 것이구요.

그래서 리턴한 값이 c보다 크거나 같아야 모든 말을 배치할 수 있는 것이겠죠, 그리고 그 mid는 답이 될 수 있으니 res에 일단 저장하구요.