[백준 2230] 수 고르기

1. 문제 설명

수 고르기

2. 문제 분석

투 포인터를 통해 두 개의 수(중복 가능) 차이를 기록해 m보다 크다면 local_diff 중 최솟값을 기록한다.

3. 나의 풀이

import sys

n, m = map(int, sys.stdin.readline().rstrip().split())
numbers= []
for _ in range(n):
    numbers.append(int(sys.stdin.readline().rstrip()))

numbers.sort()
left, right = 0, 0
local_diff = sys.maxsize

while left <= right and right < n:
    diff = abs(numbers[left] - numbers[right])
    if diff >= m:
        local_diff = min(diff, local_diff)
        left += 1
    else:
        right += 1

print(local_diff)

좋은 웹페이지 즐겨찾기