DevBoi

[Two pointer] 2230백준 문제 풀이 본문

Algorithm/[Two pointer]

[Two pointer] 2230백준 문제 풀이

HiSmith 2021. 12. 7. 14:05
반응형

https://www.acmicpc.net/problem/2230

 

2230번: 수 고르기

N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어

www.acmicpc.net

 

 

해당 수고르기 문제에서는,

정렬을 사용하면된다. 문제 풀이는 크게 이렇다.

left는 0 right는 맨마지막에 포인터를 둔다.

두수의 차이를 절대값으로 해서  비교를하고

taget보다 큰경우에 answer를 math.min으로 값을 업데이트해준다.

 

그리고 만약에 sum이 target보다 크다면, 정렬이 되어있으니 left를 하나 옮기는데, 여기서 right와 값이 같은 Index일수도있어서

해당 케이스에서는 left,right를 같이 ++해준다.

 

만약에 sum이 target보다 작다면, sum을 키워야 하기 때문에 right를 ++ 해준다.

 

반응형

'Algorithm > [Two pointer]' 카테고리의 다른 글

[Two pointer] 백준 16472  (0) 2021.12.12
[Two pointer] 백준 1806  (0) 2021.12.09
[Two pointer] 백준 2003번  (0) 2021.12.09
[Two pointer] 3273번 문제풀이  (0) 2021.12.07
[Two pointer] 백준 2559번  (0) 2021.12.07