3번째 입력한 값을 입력받을 때 오름차순으로 받고, inputArr[left] 와 inputArr[right]의 합이 M과 동일하면 count 를 증가시키면서 left += 1, right -= 1 을 해주고 아래의 if 문은 실행하지 않습니다.
만약 leftIndex + rightIndex < M 보다 작다면 left += 1, 그게 아닌 경우는 right -=1 을 해주면서 값을 찾으면 됩니다.
let N = Int(readLine()!)!
let M = Int(readLine()!)!
let inputArr = readLine()!.split(separator: " ").map { Int($0)! }.sorted()
var left = 0
var right = inputArr.count - 1 //배열의 마지막 값은 index - 1
var count = 0
while left < right {
if inputArr[left] + inputArr[right] == M {
count += 1
left += 1
right -= 1
continue
}
if inputArr[left] + inputArr[right] < M {
left += 1
} else { right -= 1 }
}
print(count)
투 포인터를 처음 공부하실 때 풀기 좋은 문제인 것 같습니다.
읽어주셔서 감사합니다! 오타 및 잘못된 내용은 언제든 댓글 달아주시면 최대한 빠르게 수정하겠습니다!