- 정렬된 배열에서 특정 합을 가지는 요소 쌍 찾기
- 정렬된 배열에서 중복 제거하기
- 특정 합을 가지는 가장 긴 부분 배열의 길이 찾기
- 특정 합을 가지는 가장 작은 부분 배열 찾기
- 주어진 배열에서 최대 합 부분 찾기
- 문자열에서 첫 번째로 반복되지 않는 문자 찾기....등 등
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: " ")
}
제가 학습한 내용을 요약하여 정리한 것입니다. 내용에 오류가 있을 수 있으며, 어떠한 피드백도 감사히 받겠습니다.
감사합니다.