[Python, 이분탐색] 백준 1072 게임

2024. 10. 28. 21:08·Algorithm
반응형

접근방식
이 문제를 해결하기 위해 이진 검색을 사용합니다. 중요한 점은 'X'의 가능한 값이 크기 때문에 간단한 계산이 비효율적이라는 것이다. 따라서 이진 검색을 사용하여 승률을 높이는 데 필요한 최소 추가 게임 수를 효율적으로 결정할 수 있다.


문제풀이
초기 승률 Z = (100 * Y) // X를 계산합니다.
Z >= 99인 경우 백분율을 더 높이는 것은 불가능하며 -1을 반환
왼쪽 = 0 및 오른쪽 = X로 시작
중간점 계산: mid = (왼쪽 + 오른쪽) // 2.
새로운 승률 (100 * (Y + mid)) // (X + mid)가 Z를 초과하는 경우 결과를 mid로 업데이트하고 검색 범위를 왼쪽으로 조정

(right = mid - 1).
그렇지 않으면 검색 범위를 오른쪽(왼쪽 = 중간 + 1)으로 조정합니다.


코드구현

x, y = map(int, input().split())
z = (100 * y) // x
left = 0
right = x
res = x

if z >= 99:
    print(-1)
else:
    while left <= right:
        mid = (left + right) // 2
        if (100 * (y + mid)) // (x + mid) > z:
            res = mid
            right = mid - 1
        else:
            left = mid + 1
    print(res)



KEY POINT
- 이진 검색 사용 사례: 이 문제는 특히 큰 숫자를 처리할 때 특정 조건을 달성하는 데 필요한 최소 반복 횟수를 찾기 위해 이진 검색을 적용할 수 있는 방법을 보여쥼
- edge case: 이 솔루션은 Z >= 99인 경우 즉시 -1을 반환하여 승률을 향상시키는 것이 불가능한 경우를 설명
- 효율성: 이진 검색을 사용하여 가능한 솔루션 범위를 좁힘으로써 무차별 접근 방식의 비효율성을 방지

 


결론
이분탐색은 큰 입력 크기로 인해 직접 계산에 비용이 너무 많이 드는 문제에 접근하는 방법에 대한 좋은 예입니다.

반응형
저작자표시 변경금지 (새창열림)

'Algorithm' 카테고리의 다른 글

Programsers JadenCase 문자열 만들기 - JavaScript  (0) 2022.10.14
Programers 키패드 누르기 (2020 카카오 인턴십) - JavaScript  (1) 2022.09.23
Programers 비밀지도 (2018 카카오 신입 공채 1차) - JavaScript  (1) 2022.09.23
Programers 체육복 - JavaScript  (0) 2022.09.22
Programers 로또의 최고 순위와 최저 순위 - JavaScript  (1) 2022.09.22
'Algorithm' 카테고리의 다른 글
  • Programsers JadenCase 문자열 만들기 - JavaScript
  • Programers 키패드 누르기 (2020 카카오 인턴십) - JavaScript
  • Programers 비밀지도 (2018 카카오 신입 공채 1차) - JavaScript
  • Programers 체육복 - JavaScript
OverFlowBIN
OverFlowBIN
    반응형
  • OverFlowBIN
    OverFlowBIN BE Tech Blog
    OverFlowBIN
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 전체보기
      • Computer Science
      • BE Study
      • MySQL
      • Algorithm
      • Language
        • TypeScript
        • JavaScript
        • Python
        • JAVA
      • Spring Boot
      • Programing Tool
      • Group Study
      • HTTP
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩테스트
    Java
    back-end
    동작원리
    app engine
    단축평가
    이진검색
    일급 함수
    논리연산자
    Google Cloud
    algorithm
    javascript
    backend
    python #내장함수 #자료구조
    axios
    programers
    spring boot
    Nullish
    기술면접
    이분탐색
    MongoDB
    일급함수
    Spring
    thymeleaf
    httpie
    백엔드
    의존성 주입
    bootstrap
    node.js
    게시판 만들기
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
OverFlowBIN
[Python, 이분탐색] 백준 1072 게임
상단으로

티스토리툴바