반응형
문제
https://www.acmicpc.net/problem/11564
문제 설명
- 수직선상에 초콜릿이 존재한다.
- 초콜릿은 a 이상 b 이하의 모든 정수 좌표 위에 존재한다.
- 점프력이 K인 준민이는 항상 점프 거리가 K가 되도록 점프한다.
- 0에서 시작해서 최대 몇 개의 초콜릿을 얻을 수 있는지 구한다.
풀이
단순 수식 계산 문제라고 생각했다.
먼저 두 숫자가 0을 기준으로 한쪽에 몰려있는지 판단했다.
만약 하나는 음수, 하나는 양수라면, 0의 위치에 초콜릿을 먹고 시작한다. 그 후 각각 0을 기준으로 a의 배수, b의 배수만큼 초콜릿을 먹을 수 있다.
두 숫자 모두 양수 혹은 음수라면 사이에 존재하는 초콜릿을 판별하여 결과에 합산했다.
- A*B가 음수일 때
- 두 수의 절댓값을 K로 나누어 초콜릿의 수를 구한다.
- A*B가 양수일 때
- a와 b의 절댓값 중 최소 최대를 구해 범위를 구한다.
- 범위 사이에서 초콜릿이 총 몇개가 나올 수 있는지 구한다.
코드
import sys
input = sys.stdin.readline
k,a,b = map(int,input().split())
if a*b < 0:
cnt = 1
a,b = abs(a), abs(b)
cnt += (a//k + b//k)
else:
a,b = min(abs(a), abs(b)),max(abs(a), abs(b))
cnt = 0
cnt += ((b//k) - ((a+k)//k) + 1)
if a % k == 0:
cnt += 1
print(cnt)
시간복잡도
- 단순 O(1)로 해결이 가능하다.
반응형
'알고리즘' 카테고리의 다른 글
| [파이썬/python] 백준 - 5376 소수를 분수로 (2) | 2025.08.13 |
|---|---|
| [파이썬/python] 백준 - 25757 임스와 함께하는 미니게임 (4) | 2025.08.12 |
| [파이썬/python] 백준 - 16940 BFS 스페셜 저지 (2) | 2025.08.08 |
| [파이썬/python] 백준 - 18234 당근 훔쳐 먹기 (3) | 2025.08.07 |
| [파이썬/python] 백준 - 2597 줄자접기 (0) | 2025.08.06 |