일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- UICollectionViewFlowLayout
- 한국어 개인정보처리방침
- addannotation
- Timer
- Required Reason API
- 영문 개인정보처리방침
- xcode로 날씨앱 만들기
- 러닝기록앱
- Xcode
- App Store Connect
- 서체관리자
- WeatherManager
- Protocol
- SwiftUI Boolean 값
- 단일 책임원칙
- MKMapItem
- 러닝타이머
- font book
- weak var
- weatherKit
- Startign Assignments
- RunningTimer
- 클로저의 캡슐화
- swift
- dispatchsource
- MKMapViewDelegate
- UIAlertAction
- CoreLocation
- CLLocationManagerDelegate
- AnyObject
- Today
- Total
VesselWheel
내적 구하기 ft. 스칼라 본문
들어가기 앞서,
내적(스칼라곱) 이란
https://ko.wikipedia.org/wiki/%EC%8A%A4%EC%B9%BC%EB%9D%BC%EA%B3%B1
두 벡터의 좌표가 각각의 배열 a = [a1, a2, ...], b = [b1, b2]을 가지고 있을 때, 이 둘의 스칼라곱은 같은 위치의 성분을 곱한 뒤. 모두 합하여 얻는 값이다.
문제
풀이
func solution(_ a: [Int], _ b: [Int]) -> Int {
// 조건문으로 두 벡터의 길이가 같지 않으면 guard 조건문을 실행
guard a.count == b.count else {
// 두 배열의 길이가 다르면 예외 처리 또는 기본값 반환
return 0
}
var result = 0
for i in 0..<a.count {
result += a[i] * b[i]
}
return result
}
다른 풀이
func solution(_ a:[Int], _ b:[Int]) -> Int {
return zip(a, b).map(*).reduce(0, +)
}
Tip
Zip()
zip(_:_:)
func zip<Sequence1, Sequence2>(
_ sequence1: Sequence1,
_ sequence2: Sequence2
) -> Zip2Sequence<Sequence1, Sequence2> where Sequence1 : Sequence, Sequence2 : Sequence
Parameters
sequence1The first sequence or collection to zip.
The second sequence or collection to zip.
Return Value
A sequence of tuple pairs, where the elements of each pair are corresponding elements of sequence1 and sequence2.
Discussion
In the Zip2Sequence instance returned by this function, the elements of the ith pair are the ith elements of each underlying sequence. The following example uses the zip(_:_:)function to iterate over an array of strings and a countable range at the same time:
let words = ["one", "two", "three", "four"]
let numbers = 1...4
for (word, number) in zip(words, numbers) {
print("\(word): \(number)")
}
// Prints "one: 1"
// Prints "two: 2"
// Prints "three: 3"
// Prints "four: 4"
If the two sequences passed to zip(_:_:) are different lengths, the resulting sequence is the same length as the shorter sequence. In this example, the resulting array is the same length as words:
let naturalNumbers = 1...Int.max
let zipped = Array(zip(words, naturalNumbers))
// zipped == [("one", 1), ("two", 2), ("three", 3), ("four", 4)]
Map()함수
map(_:)
func map<T>(_ transform: (Self.Element) throws -> T) rethrows -> [T]
Parameters
transformA mapping closure. transform accepts an element of this sequence as its parameter and returns a transformed value of the same or of a different type.
Return Value
An array containing the transformed elements of this sequence.
Discussion
In this example, map is used first to convert the names in the array to lowercase strings and then to count their characters.
let cast = ["Vivien", "Marlon", "Kim", "Karl"]
let lowercaseNames = cast.map { $0.lowercased() }
// 'lowercaseNames' == ["vivien", "marlon", "kim", "karl"]
let letterCounts = cast.map { $0.count }
// 'letterCounts' == [6, 6, 3, 4]
'Coding Test Practice in Swift' 카테고리의 다른 글
약수의 개수와 덧셈 (1) | 2023.11.29 |
---|---|
Class 와 사칙연산을 활용한 계산기 만들기 (0) | 2023.11.28 |
제곱근 구하기 (0) | 2023.11.27 |
수박수? 반복패턴 만들기 (2) | 2023.11.27 |
제일 작은 수 제거하기 (1) | 2023.11.23 |