본문 바로가기
Algorithm/Backjoon

[백준] 2230 파이썬 - 수 고르기

by chobbo 2024. 10. 9.

문제

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)