(Swift) 백준 1026 보물

SteadySlower·2022년 8월 4일
0

Coding Test

목록 보기
112/305

1026번: 보물

문제 풀이 아이디어

어차피 A와 B의 숫자를 하나씩 짝 짓는 문제이기 때문에 B의 순서를 변경할 수 없다고 해서 B를 그대로 두고 문제를 풀 필요는 없습니다.

S를 가장 작게 만들기 위해서는 A의 가장 큰 숫자를 B의 가장 작은 숫자와 짝지어서 곱하면 됩니다. 따라서 A를 오름차순으로 B를 내림차순으로 정렬해서 S를 구합시다.

코드

let N = Int(readLine()!)!
// 오름차순 정렬
let A = readLine()!.split(separator: " ").map { Int(String($0))! }.sorted(by: <)
// 내림차순 정렬
let B = readLine()!.split(separator: " ").map { Int(String($0))! }.sorted(by: >)

// S 구해서 출력하기
var S = 0
for i in 0..<N {
    S += A[i] * B[i]
}
print(S)
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글