문제
https://www.acmicpc.net/problem/2230
풀이
투포인터를 사용해 풀면 간단하게 풀 수 있다.
주의해야 할 점은 m의 제한 사항이다.
나는 보통 큰 값을 쓸 때 int(1e9)와 같이 사용을 했는데, (10억)
이 문제에서는 m의 값이 int(1e9)보다 클 수도 있게 주어진다.
따라서 int(2e9)(20억)로 적어주어야 답이 정상적으로 나온다.
코드
import sys
input = sys.stdin.readline
n,m = map(int,input().split())
array = [int(input()) for _ in range(n)]
# 먼저 배열을 정렬해준다
array.sort()
answer = int(2e9)
start = 0
end = 0
while end < n:
value = array[end] - array[start]
if value > m:
answer = min(answer,value)
start += 1
elif value < m:
end += 1
# 차이가 m인 경우가 발생했을 경우, m보다 작은 차이가 나는 경우는 없으므로 리턴
else:
answer = m
break
print(answer)
'Algorithm > Backjoon' 카테고리의 다른 글
[백준] 14675 파이썬 - 단절점과 단절선 (0) | 2024.10.10 |
---|---|
[백준] 1991 파이썬 - 트리 순회 (0) | 2024.10.10 |
[백준] 1068 파이썬 - 트리 (1) | 2024.10.09 |
[백준] 10703 파이썬 - 유성 (5) | 2024.10.09 |
[백준] 1038 파이썬 - 감소하는 수 (0) | 2024.09.20 |