문제
https://www.acmicpc.net/problem/2230
풀이
해당 문제는 투 포인터를 사용하면 된다.
투 포인터를 사용하기 위해서는, 먼저 정렬을 진행해줘야 한다.
문제의 요구사항은 두 수의 차 중 M보다 가장 작은 차이를 구하는 것이므로, M을 구하게 되면 바로 답이 된다.
나머지의 경우, 차이 값의 최소 값을 갱신하며 찾아가면 된다.
코드
N,M = map(int, input().split())
nums = [int(input()) for _ in range(N)]
nums.sort()
left,right = 0,1
result = 2e9
while left <= right < N:
diff = nums[right]-nums[left]
if diff == M:
result = M
break
elif diff < M:
right += 1
else:
result = min(result, diff)
left += 1
print(result)
'Koala - 13기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[PG/python3] 입국심사 (0) | 2024.01.30 |
---|---|
[백준/Python] 14465번: 소가 길을 건너간 이유 5 (0) | 2024.01.28 |
[백준/python3] 6159: Costume Party (0) | 2024.01.28 |
[백준/C++] 12856번: 평범한 배낭 (0) | 2024.01.28 |
[백준/C++] 20057 마법사 상어와 토네이도 (0) | 2024.01.28 |