ํ๋ก๊ทธ๋๋จธ์ค ์ต์๊ฐ ๋ง๋ค๊ธฐ Swift
ํ์ด: ํต์ฌ์ ๊ฐ์ฅ ํฐ ์์ ๊ฐ์ฅ ์์ ์๋ฅผ ๊ณฑํ ๋ ๊ฐ์ฅ ์์ ๊ฐ์ด ๋๋ค๋ ๊ฒ์ ๋๋ค.
๊ณ ๋ก A๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ์์ผ์ฃผ๊ณ B๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ์์ผ์ค๋๋ค. (A๋ B๋ฅผ ๋ฐ๋๋ก ํด๋ ์๊ด์์ต๋๋ค.)
๊ทธ๋ค์ ์ฐจ๋ก๋ก A์ ๊ฐ๊ณผ B์ ๊ฐ์ ๊ณฑํด์ฃผ๊ณ ๊ทธ ๊ฐ์ ๋ํด์ค๋๋ค.
A๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ์์ผ์ค๋๋ค. => A.sorted(by:<)
B๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ์์ผ์ค๋๋ค. => B.sorted(by:>)
zip์ ์ด์ฉํ์ฌ ๋ ๊ฐ์ ๋ฌถ์ด์ค๋๋ค. => zip(A.sorted(by:<) , B.sorted(by:>)) (์ฌ๊ธฐ์ zip์ ์์ ๋ง๋ค์ด์ฃผ๋ ๋ฉ์๋์ ๋๋ค.)
reduce๋ฅผ ์ด์ฉํ์ฌ ์ฐจ๋ก๋ก A์ B๋ฅผ ๊ณฑํ ๊ฐ์ ๋ํด์ค๋๋ค. => a.reduce(0) {$0 + (Int($1.0)*Int($1.1))} ( ์ฌ๊ธฐ์ reduce๋ ์ฐจ๋ก๋ก ๊ฐ์ ๋ ํด์ฃผ๋ ๋ฉ์๋์ ๋๋ค.)
์ ๋ ๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ ํ์์ง๋ง ์๋์ ๊ฐ์ด for๋ฌธ์ ํ์ฉํ์ฌ ํ ์๋ ์์ต๋๋ค.
์ ์ฒดํ์ด
1 2 3 4 5 6 7 8 9 |
import Foundation
func solution(_ A:[Int], _ B:[Int]) -> Int { let a = zip(A.sorted(by:<) , B.sorted(by:>))
return a.reduce(0) {$0 + (Int($1.0)*Int($1.1))} }
|
๋ค๋ฅธ ์ฌ๋์ ํ์ด
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import Foundation
func solution(_ A:[Int], _ B:[Int]) -> Int
{
let sA = A.sorted { $0 < $1 }
let sB = B.sorted { $0 > $1 }
var answer: Int = 0
for i in 0..<sA.count {
answer += sA[i] * sB[i]
}
return answer
}
|