본문 바로가기
Problem Solving

[Swift] 프로그래머스 최솟값 만들기(lv. 2)

by DuncanKim 2023. 2. 28.
728x90

[Swift] 프로그래머스 최솟값 만들기(lv. 2)

 

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12941

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2. 접근

열심히 만들면 된다.

한쪽은 오름차순으로 정렬하고, 한쪽은 내림차순으로 정렬해서 차례로 곱한 값을 누적하여 합하면 된다.

나는 주어진 A를 오름차순 정렬하고, B를 내림차순 정렬했다.

 

innerA의 값을 직접 바꾸는 방법으로 메모리를 더 쓰는 것을 방지해보았다. enumarated()를 사용하여 인덱스와 원소를 함께 불러서 코드를 조금 더 줄여보았다.

 

3. 코드

import Foundation

func solution(_ A:[Int], _ B:[Int]) -> Int {
    var innerA = A.sorted()
    var innerB = B.sorted(by: >)
    
    for (index, i) in innerA.enumarated() {
        innerA[index] = i * innerB[index]
    }
    return innerA.reduce(0, +)
}
728x90

댓글