20251121 baekjoon
This commit is contained in:
parent
97f863619f
commit
537c5683f4
33
code_study/Baekjoon/swift/2143_1.swift
Normal file
33
code_study/Baekjoon/swift/2143_1.swift
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
if let T = Int(readLine() ?? ""),
|
||||||
|
let n = Int(readLine() ?? ""),
|
||||||
|
let inputA = readLine(),
|
||||||
|
let A = inputA.split(separator: " ").compactMap({Int($0)}) as? [Int],
|
||||||
|
let m = Int(readLine() ?? ""),
|
||||||
|
let inputB = readLine(),
|
||||||
|
let B = inputB.split(separator: " ").compactMap({Int($0)}) as? [Int],
|
||||||
|
A.count == n , B.count == m
|
||||||
|
{
|
||||||
|
var countSumB = [Int: Int]()
|
||||||
|
for i in 0..<m {
|
||||||
|
var currentSumB = 0
|
||||||
|
for j in i..<m {
|
||||||
|
currentSumB += B[j]
|
||||||
|
countSumB[currentSumB, default: 0] += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var ans = 0
|
||||||
|
for i in 0..<n {
|
||||||
|
var currentSumA = 0
|
||||||
|
for j in i..<n {
|
||||||
|
currentSumA += A[j]
|
||||||
|
|
||||||
|
let target = T - currentSumA
|
||||||
|
if let cnt = countSumB[target] {
|
||||||
|
ans += cnt
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print(ans)
|
||||||
|
}
|
||||||
65
code_study/Baekjoon/swift/2143_2.swift
Normal file
65
code_study/Baekjoon/swift/2143_2.swift
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
if let T = Int(readLine() ?? ""),
|
||||||
|
let n = Int(readLine() ?? ""),
|
||||||
|
let inputA = readLine(),
|
||||||
|
let A = inputA.split(separator: " ").compactMap({Int($0)}) as? [Int],
|
||||||
|
let m = Int(readLine() ?? ""),
|
||||||
|
let inputB = readLine(),
|
||||||
|
let B = inputB.split(separator: " ").compactMap({Int($0)}) as? [Int],
|
||||||
|
A.count == n , B.count == m
|
||||||
|
{
|
||||||
|
var sumA: [Int] = []
|
||||||
|
for i in 0..<n {
|
||||||
|
var currentSumA = 0
|
||||||
|
for j in i..<n {
|
||||||
|
currentSumA += A[j]
|
||||||
|
sumA.append(currentSumA)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sumA.sort()
|
||||||
|
|
||||||
|
var sumB: [Int] = []
|
||||||
|
for i in 0..<m {
|
||||||
|
var currentSumB = 0
|
||||||
|
for j in i..<m {
|
||||||
|
currentSumB += B[j]
|
||||||
|
sumB.append(currentSumB)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sumB.sort()
|
||||||
|
|
||||||
|
var left = 0
|
||||||
|
var right = sumB.count-1
|
||||||
|
var ans = 0
|
||||||
|
|
||||||
|
while left < sumA.count && right >= 0 {
|
||||||
|
let temp = sumA[left] + sumB[right]
|
||||||
|
|
||||||
|
if T > temp {
|
||||||
|
left += 1
|
||||||
|
}
|
||||||
|
else if T < temp {
|
||||||
|
right -= 1
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var sameCountA = 0
|
||||||
|
let currentSumA = sumA[left]
|
||||||
|
while left < sumA.count && sumA[left] == currentSumA {
|
||||||
|
sameCountA += 1
|
||||||
|
left += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
var sameCountB = 0
|
||||||
|
let currentSumB = sumB[right]
|
||||||
|
while right >= 0 && sumB[right] == currentSumB {
|
||||||
|
sameCountB += 1
|
||||||
|
right -= 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ans += sameCountA * sameCountB
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print(ans)
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user