[2230] 수고르기
Input
- 첫째 줄에 두 정수 N, M
- 둘째 줄에 다음 N개의 줄에는 차례로 A[1], A[2], …, A[N]
- 제한
1 ≤ N ≤ 100,000
0 ≤ M ≤ 2,000,000,000
0 ≤ |A[i]| ≤ 1,000,000,000
Output
- 첫째 줄에 M 이상이면서 가장 작은 차이를 출력
✨ Solve
- 투포인터
- 수열 오름차순 정렬
- answer 초기값 nt(2e9)
- 두 수의 차이가 M 이상이면서 제일 작은 수를 비교한 뒤, 업데이트
💻 Code
### 언어 python3, 메모리 35500KB, 시간 184ms
import sys
n, m = map(int, sys.stdin.readline().split())
numbers=[]
for i in range(n):
number = int(sys.stdin.readline())
numbers.append(number)
numbers.sort()
left, right = 0, 0
answer = int(2e9) # M 이상이므로 (0 ≤ M ≤ 2,000,000,000)
while left <=right and right < n:
if numbers[right]-numbers[left] < m:
right +=1
else:
answer = min(answer, numbers[right]-numbers[left])
left +=1
print(answer)
'# 소쿠리 개발 공부방 > 코테 문제풀이' 카테고리의 다른 글
[BAEKJOON] [10845] 큐: PYTHON (0) | 2023.07.27 |
---|---|
[BAEKJOON] [10828] 스택: PYTHON (0) | 2023.07.27 |
[BAEKJOON] [1806] 부분합: PYTHON (0) | 2023.07.18 |
[BAEKJOON] [18870] 좌표 압축: PYTHON (0) | 2023.07.18 |