본문 바로가기
Algorithm/문제풀이_백준

[Swift][투포인터] 백준 3273번 (두 수의 합)

by Joahnee 2022. 5. 31.

요구능력

투 포인터

 

문제풀이

이전의 수고르기에서는 두 수의 차를 구하는것이었다.

그래서 기존에 내가하던 방식의 투포인터로 맨앞에서부터 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)

 

댓글