https://www.acmicpc.net/problem/2230
💡 해결방법
A 배열에 입력받은 원소들을 정렬하면 이 문제를 쉽게 풀 수 있다.
항상 차이가 M이상인 두 수를 고를 수 있다.
A 배열을 정렬하면, 투포인터를 적용할 수 있기 때문이다.
투포인터는 정렬된 배열에서 순차적으로 접근할 때 적용할 수 있는 알고리즘이다.
🧾코드
# 2230 수 고르기
N, M = map(int, input().split())
arr = [int(input()) for _ in range(N)]
arr.sort()
l, r = 0, 0
ans = float('inf')
while l <= r and r < N:
differ = abs(arr[r] - arr[l])
if differ < M:
r += 1
elif differ >= M:
l += 1
ans = min(ans, differ)
print(ans)
'문제 풀이 > 백준' 카테고리의 다른 글
[G1] 백준 2042 - 구간 합 구하기 (Python3) (0) | 2025.03.29 |
---|---|
[G5] 백준 2225 - 합분해 (python3) (0) | 2025.03.17 |
[G2] 백준 7453 - 합이 0인 네 정수 (Python3) (0) | 2025.02.25 |
[G5] 백준 3020 - 개똥벌레 (Python3) (0) | 2025.02.25 |
[S4] 백준 31797 - 아~파트 아파트(Python3) (4) | 2024.11.14 |
댓글