요구능력
투 포인터, 정렬
문제풀이
포인터가 가리키고있는 위치의 값끼리 차를 구하면된다.
중요한점은 정렬을 해주지 않으면 투포인터가 성립되지 않는다.
그리고 diff >= m이 되면 우리는 최소의 차이를 구하는 것이므로 정렬되어있기 때문에 뒤로갈수록 차이는 더 커져서 볼 필요없이 break해줬다.
후기
투포인터의 응용(?)문제
코드
let nm = readLine()!.split(separator: " ").map{Int(String($0))!}
let n = nm[0]
let m = nm[1]
var arr = [Int]()
for _ in 0..<n{
arr.append(Int(String(readLine()!))!)
}
arr.sort()
var diff = 0
var result = Int.max
var end = 0
for start in 0..<n{
while end < n{
diff = abs(arr[start] - arr[end])
if diff >= m {
result = min(result, diff)
break
}
if diff < m {
end += 1
}
}
}
print(result)
'Algorithm > 문제풀이_백준' 카테고리의 다른 글
[Swift][이분탐색] 백준 2805번 (나무 자르기) (0) | 2022.05.24 |
---|---|
[Swift][이분탐색] 백준 1654번 (랜선 자르기) (0) | 2022.05.23 |
[Swift][구현] 백준 15662 (톱니바퀴(2)) (0) | 2022.05.18 |
[Swift][구현] 백준 17406번 (배열 돌리기 4) (0) | 2022.05.17 |
[Swift][구현] 백준 16967번 (배열 복원하기) (0) | 2022.05.14 |
댓글