본문 바로가기
문제 풀이/백준

[G5] 백준 2230 - 수 고르기 (Python3)

by JJong | 쫑 2025. 3. 1.

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)

댓글