반응형
https://www.acmicpc.net/problem/1072
소스코드
풀이
★ 문제를 봤을 때 승률(z)이 변하는 최소 게임 수를 구하라고 했는데, 승률이 오르는 경우 뿐만 아니라 내리는 경우도 있지 않나 싶어서 조금 헤맸던 거 같습니다.
★ 승률 k를 구하는 과정에서 소수점 이하를 내림 처리 해주는 math 모듈의 trunc 함수를 사용하였습니다. 처음엔 k = m.trunc((y/x)*100)으로 승률을 구했는데 정답 처리가 계속 오답으로 떠서 구글링을 좀 해봤습니다. 보니까 파이썬의 부동소수점 오차로 인한 문제라고 합니다. 그래서 k = (y*100)//x로 승률을 구해줬습니다 !
★ 승률이 될 수 있는 범위는 1부터 x까지입니다. 승률이 99이상이 되면 승률이 상승할 수 있는 값이 없기 때문에 -1이 출력되고, 아닐 시 이분탐색을 실시합니다. ( y값의 범위는 1 <= y <= x 이기 때문에 z가 99가 되었을 때 범위 안에서 z를 바꿀 수 없음)
★ 이렇게 구한 게임수를 y와 x에 더하여 승률을 구해주고, 구한 승률인 t가 k보다 크면 ans를 mid로 바꾼 뒤 rt를 mid-1 해줍니다. 반대의 경우엔 lt를 mid+1 해줍니다 !
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준 알고리즘] 1049번: 기타줄 (Python) (0) | 2023.06.07 |
---|---|
[백준 알고리즘] 2161번: 카드1 (Python) (0) | 2023.06.06 |
[백준 알고리즘] 17299번: 오등큰수 (Python) (0) | 2023.06.06 |
[백준 알고리즘] 2470번: 두 용액 (Python) (0) | 2023.06.06 |
[백준 알고리즘] 10815번: 숫자카드 (Python) (0) | 2023.06.05 |