Skip to content

Latest commit

 

History

History
28 lines (20 loc) · 1.32 KB

README.md

File metadata and controls

28 lines (20 loc) · 1.32 KB

문제풀이

최대한 많은 같은 양의 파를 쓰고 남은 파의 길이 구하기. 1개의 파닭에 1개이상의 파가 들어가면 안된다.

입력

  • s, c : 파의 갯수, 파닭의 수
  • s줄 파의 길이

로직

  1. 입력을 받는다.
  2. 파의 최소 길이와 최대 길이를 정의한다.
    1. 최대 길이는 가장 짧은 파의 길이면 안된다.
  3. 최대한 많은 같은 양의 파의 길이를 기록 할 변수를 선언한다.
  4. 이분탐색을 수행한다.
    1. 체크할 파의 길이 중심값을 구한다.
    2. 이 파의 길이로 파닭에 1개 이상의 파가 넘지 않도록 주문 수를 충족하면 변수에 기록하고 더 많은 양을 사용 할 수 있는지 체크하기 위해서 최소값을 갱신한다.
    3. 조건이 충족되지 않으면 더 작은 양으로 체크하기 위해서 최대값을 갱신한다.
  5. 전체 길이를 구하고 (3)에서 선언한 변수x파의 갯수를 뺀 길이를 반환한다.

맞왜틀

  • BigInt로 풀면 느리다.
  • 최대값(right)을 정의할 때 1개 이상의 파가 들어가면 안되니까 가장 짧은 파의 길이라고 생각했는데 틀렸다. 가장 긴 길이나 0번째 파의 길이로 하면 통과한다.
  • 이분탐색에서 체크하면서 sum 값을 같이 구하는게 더 느리다.

리팩토링