잡초의 일지

[Swift] 프로그래머스 | 코딩테스트 연습 -> 연습문제 -> 최솟값 만들기 본문

[코딩] 문제풀기/Swift

[Swift] 프로그래머스 | 코딩테스트 연습 -> 연습문제 -> 최솟값 만들기

JabCho 2020. 7. 28. 07:47
728x90
반응형
SMALL
func solution(_ A:[Int], _ B:[Int]) -> Int
{
    var ans = 0
    let B = B.sorted()		// 오름차순
    let A = A.sorted(by: >)		//내림차순

    for i in 0..<A.count {
        ans += A[i] * B[i]
    }
    return ans
}

 

sort() 와 sorted()

sort()는 배열 자체를 다시 정렬하는것이기 때문에 let으로 선언하면 안된다. (원본 배열이 바뀐다.)

 

 

sorted()는 정렬된 새로운 배열이라고 생각하면 된다. '배열'을 리턴해준다. 따라서 원본 배열은 바뀌지 않는다. 

 

 

 

이렇게 해서 오름차순 정렬된 배열을 얻을 수 있다. 

 

 

reverse() 와 reversed()

내림차순 정렬된 배열을 얻기 위해선 reverse()를 사용한다.

reverse()는 sort()와 마찬가지로 배열 자체를 다시 정렬하기 때문에 var로 선언해야 한다. (원본 배열이 바뀐다.)

 

 

reversed()는 바라던대로 sorted()처럼 움직이지 않는다.

아래의 공식문서를 읽어보니, 문자에서는 리버스 된 순서로 문자를 프린트 하는것 같다.

developer.apple.com/documentation/swift/array/1690025-reversed

 

Apple Developer Documentation

 

developer.apple.com

그렇다면, 내림차순으로 정렬하기 위해선?

.sort(by: >) .sorted(by: >)를 사용하면 된다.

 

728x90
반응형
LIST
Comments