https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
소스코드
import Foundation
var n = Int(readLine()!)
var a = readLine()!.components(separatedBy: " ").map{Int($0)!}.sorted(by: <)
var b = readLine()!.components(separatedBy: " ").map{Int($0)!}.sorted(by: >)
var sum = 0
for i in 0..<n{
sum+=a[i]*b[i]
}
print(sum)
풀이
readLine으로 읽은 string 배열을 int로 변환하기 위해 고차 함수 map을 이용하였다.
문제에서 입력받은 b는 재배열을 하면 안 된다고 하여 계속 고민하다 인터넷을 찾아보니 어차피 최솟값만 출력하는 것이기 때문에 두 배열 모두 정렬을 바꿔주어도 상관없다.라는 결론이 나왔다. 따라서 sorted함수를 이용해 각각 오름,내림 차순으로 정렬하여 계산하였다.
// 오름차순
arr.sort()
arr.sort(by: <)
arr = arr.sorted(by: <)
// 내림차순
arr.sort(by: >)
arr = arr.sorted(by: >)
'[Swift] > [Swift 알고리즘]' 카테고리의 다른 글
[Swift/level 1] 문자열을 정수로 바꾸기 - 12925 (0) | 2022.12.06 |
---|---|
[Swift/스위프트] 프로그래머스 - Lv.01 문자열 내 p와 y의 개수 (0) | 2022.12.04 |
[Swift/스위프트] 프로그래머스 - Lv.01 자릿수 더하기 (0) | 2022.12.03 |
[Swift/스위프트] 프로그래머스 - Lv.01 약수의 합 (signal: illegal instruction (core dumped)) (0) | 2022.12.02 |
[Swift/스위프트] 백준 1000번: A+B (0) | 2022.11.24 |
댓글