
- 정렬된 배열에서 특정 합을 가지는 요소 쌍 찾기
 - 정렬된 배열에서 중복 제거하기
 - 특정 합을 가지는 가장 긴 부분 배열의 길이 찾기
 - 특정 합을 가지는 가장 작은 부분 배열 찾기
 - 주어진 배열에서 최대 합 부분 찾기
 - 문자열에서 첫 번째로 반복되지 않는 문자 찾기....등 등
 
func findConsecutiveSum(_ nums: [Int], target: Int) -> Int { 
	var start = 0
	var end = 0 
	var sum = 0 
	
	var result = 0 
	
	while end < nums.count { 
		sum += nums[end]
		
		while sum > target && start < end { 
			sum -= nums[start]
			start += 1
		}
		
		if sum == target { 
			result += 1
		}
		
		end += 1 
	}
	
	return result
} 
let nums = [1,2,3,2,5]
let target = 5
findConsecutiveSum(nums,target) 
// 3 

import Foundation
func findSum(_ nums: [Int], target: Int) -> Int {
    var start = 0
    var end = nums.count - 1
    var sum = 0
    
    var result = 0
    
    while start < end {
        sum = nums[start] + nums[end]
        
        if sum == target {
            start += 1
            end -= 1
            result += 1
        } else if sum < target {
            start += 1
        } else {
            end -= 1
        }
    }
    
    return result
}
let n = Int(readLine()!)!
let numbers = readLine()!.components(separatedBy: " ").map { Int($0)! }.sorted()
let targetSum = Int(readLine()!)!
let subCount = findSum(numbers, target: targetSum)
print(subCount)
func unionArray(_ arr1: [Int], _ arr2: [Int]) -> [Int] {
    var i = 0
    var j = 0
    
    var result = [Int]()
    
    while i < arr1.count && j < arr2.count {
        if arr1[i] == arr2[j] {
            result.append(arr1[i])
            result.append(arr2[j])
            i += 1
            j += 1
        } else if arr1[i] < arr2[j] {
            result.append(arr1[i])
            i += 1
        } else {
            result.append(arr2[j])
            j += 1
        }
    }
    
    while i < arr1.count {
        result.append(arr1[i])
        i += 1
    }
    
    while j < arr2.count {
        result.append(arr2[j])
        j += 1
    }
    
    return result
}
print(unionArray([1,3,3,5,7], [2,3,4,6,8]))
[1, 2, 3, 3, 3, 4, 5, 6, 7, 8]
= 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,000,000 이하이다. N개의 용액들의 특성값은 모두 다르고, 산성 용액만으로나 알칼리성 용액만으로 입력이 주어지는 경우도 있을 수 있다.
5
-2 4 -99 -1 98
-99 98
import Foundation
func findNearbyZero(_ arr: [Int]) -> [Int] {
    var value = Int.max
    var result: [Int] = []
    
    var left = 0
    var right = arr.count - 1
    
    while left < right {
        let tempNum = arr[left] + arr[right]
        let absTempNum = abs(tempNum)
        
        if tempNum == 0 {
            result = [arr[left], arr[right]]
            break
        }
        
        if value > absTempNum {
            result = [arr[left], arr[right]]
            value = absTempNum
        }
        
        if tempNum > 0 {
            right -= 1
        } else {
            left += 1
        }
    }
    
    return result
}
let n = Int(readLine()!)!
let arr = readLine()!.components(separatedBy: " ").map { Int($0)! }.sorted()
findNearbyZero(arr).forEach {
    print($0, terminator: " ")
}
제가 학습한 내용을 요약하여 정리한 것입니다. 내용에 오류가 있을 수 있으며, 어떠한 피드백도 감사히 받겠습니다.
감사합니다.