요구능력
투 포인터
문제풀이
이전의 수고르기에서는 두 수의 차를 구하는것이었다.
그래서 기존에 내가하던 방식의 투포인터로 맨앞에서부터 start와 end를 함께 올려갔는데,
이 문제의 경우에는 합을 구하는거라 위에 방식대로하면 합이 계속해서 커질 수 밖에 없기 때문에 비교가 되지 않는다.
그래서 맨앞쪽과 맨뒤쪽에 포인터를 두고 비교를 해주었다.
후기
투포인터는 유형이 다양한거같다.
코드
let n = Int(String(readLine()!))!
var arr = readLine()!.split(separator: " ").map{Int(String($0))!}.sorted()
let x = Int(String(readLine()!))!
var left = 0
var right = n - 1
var result = 0
while left < right{
let a = arr[left]
let b = arr[right]
if x == a + b {
right -= 1
left += 1
result += 1
}else if x < a + b {
right -= 1
}else{
left += 1
}
}
print(result)
'Algorithm > 문제풀이_백준' 카테고리의 다른 글
[Swift][누적합] 백준 10986번 (나머지 합) (2) | 2022.05.30 |
---|---|
[Swift][누적합] 백준 16139번 (인간 - 컴퓨터 상호작용) (0) | 2022.05.30 |
[Swift][누적합] 백준 2559번 (수열) (0) | 2022.05.30 |
[Swift][누적합] 백준 11659번 (구간 합 구하기4) (0) | 2022.05.30 |
[Swift][우선순위 큐] 백준 1655번 (가운데를 말해요) (0) | 2022.05.27 |
댓글