Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 29736번 - '브실이와 친구가 되고 싶어 🤸♀️' (PYTHON 풀이) 본문
문제:

A, B 범위가 주어지고, 브실이가 푼 문제 수와 친구가 될 수 있는 문제 수 차이에 대한 기준 K가 주어질 때 총 몇명의 사람과 친구가 될 수 있는지 출력하는 문제이다. 아무와도 친구가 될 수 없다면 IMPOSSIBLE을 출력하면 된다.
풀이:
A, B = map(int, input().split())
K, X = map(int, input().split())
start = max(A, K - X)
end = min(B, K + X)
if start > end:
print("IMPOSSIBLE")
else:
print(end - start + 1)
A, B, K, X를 입력받고 시작범위와 끝범위를 구한다.
우선 두개의 값을 비교해서 겹치는 부분만 뽑아야하기 때문에 각 범위의 최소값인 A와 K-X 중 큰 값을, 최대값 범위인 B, K+X 중 작은 값을 선택해서 범위를 구한다.

예를 들어 친구의 범위가 될 수 있는 게 10부터 20, 브실이의 범위가 11~18이라고 가정해보자 그럼 여기서 겹치는 부분만 뽑아야 하기 때문에 친구 범위의 최소값인 10, 브실이의 범위인 11 중 큰 값인 11이 시작점이 되고, 친구 범위의 최대값인 20, 브실이의 범위인 18 중 작은 값인 18을 끝값으로 잡아야 겹치는 부분만 뽑을 수 있다. 그래서 상기와 같이 범위를 정한 것이다.
이후에는 시작값과 끝값을 비교해서 시작값이 더 크다면 친구가 될 수 없기 때문에 IMPOSSIBLE을, 그렇지 않다면 친구가 될 수 있는 수를 출력하면 된다. 이는 끝값에서 시작값을 빼고 정수 범위를 구할 땐 1을 더해야하므로 end-start+1을 해주면 된다.
(1을 더하는 이유는 예를 들어, 10을 기준으로 오차범위가 5라면 5,6,7,8,9,10,11,12,13,14,15와 같이 총 11 즉, 10+1이 되기 때문)
'CODING 💻' 카테고리의 다른 글
| 백준 26489번 - 'Gum Gum for Jay Jay' (PYTHON 풀이) (0) | 2026.03.22 |
|---|---|
| 백준 17618번 - '신기한 수' (PYTHON 풀이) (0) | 2026.03.21 |
| 백준 31822번 - '재수강' (PYTHON 풀이) (0) | 2026.03.19 |
| 백준 30999번 - '민주주의' (PYTHON 풀이) (0) | 2026.03.18 |
| 백준 2864번 - '5와 6의 차이' (PYTHON 풀이) (0) | 2026.03.17 |
