백준 - 좋다 (1253)

Seoyoung Lee·2023년 1월 17일
0

알고리즘

목록 보기
9/104
post-thumbnail
let N = Int(readLine()!)!
let arr = readLine()!.split(separator: " ").map{ Int(String($0))! }.sorted()
var answer = 0

for i in 0..<N {
    var left = 0, right = N-1
    
    while left < right {
        let sum = arr[left] + arr[right]
        if sum < arr[i] {
            left += 1
        } else if sum > arr[i] {
            right -= 1
        } else {
            if left != i && right != i {
                answer += 1
                break
            } else if left == i {
                left += 1
            } else {
                right -= 1
            }
        }
    }
}

print(answer)
  • 사용 알고리즘: 투 포인터

N개의 수 중에 음수가 있을 수 있기 때문에 매번 포인터를 배열의 처음과 끝에 두고 검사해야 하는 것 같다.

→ 그래서 더불어 포인터 중 하나라도 현재 인덱스를 가리키고 있는지도 검사해야 하는 것..!

profile
나의 내일은 파래 🐳

0개의 댓글