반응형
안녕하세요, KataRN입니다.
오늘은 zip에 대해 알아보겠습니다.
오늘도 열심히 알고리즘을 풀고있는데 배열 2개를 어떻게 요리를 못할까 하다가 알게된 함수입니다.
func zip<Sequence1, Sequence2>(_ sequence1: Sequence1, _ sequence2: Sequence2)
-> Zip2Sequence<Sequence1, Sequence2> where Sequence1 : Sequence, Sequence2 : Sequence
보시는 바와 같이 zip를 사용하기 위해서는 2개의 배열이 필요합니다.(많아도 적어도 안됩니다.)
예제로 설명 드리겠습니다.
let aArr = [1,2,3,4,5]
let bArr = ["a","b","c","d","e"]
let zipArr = zip(aArr,bArr)
print(zipArr)
위 처럼 print를 하였더니....
Zip2Sequence<Array<Int>, Array<String>>(_sequence1: [1, 2, 3, 4, 5], _sequence2: ["a", "b", "c", "d", "e"])
????? 뭔말인지 모르겠더라구요...
그래서 더 쉬운 예제를 준비해봤습니다.
let aArr = [1,2,3,4,5]
let bArr = ["a","b","c","d","e"]
let zipArr = zip(aArr,bArr)
for (i,j) in zipArr {
print("\(i)번 \(j)")
}
이렇게 사용하면 아래처럼 뱉습니다ㅎㅎ
1번 a
2번 b
3번 c
4번 d
5번 e
이걸 어따쓰냐구요?....
그래서 쓸만한 예제도 준비했습니다^^
Q1. aArr 배열과 bArr 배열을 같은 인덱스 끼리 곱해서 더한값은 얼마인가요? 라는 문제가 있습니다.
let aArr = [1, 2, 3, 4, 5]
let bArr = [6, 7, 8, 9, 10]
어떻게 푸시겠습니까? 응용해서 풀어보도록 하죠. 후훗
let aArr = [1, 2, 3, 4, 5]
let bArr = [6, 7, 8, 9, 10]
let zipArr = zip(aArr,bArr)
var sum = 0
for (i,j) in zipArr {
sum += (i * j)
}
print(sum)
이렇게 쓸거면 왜쓰냐구요?....
그렇죠.. 저라면 이렇게 쓸겁니다.
let aArr = [1, 2, 3, 4, 5]
let bArr = [6, 7, 8, 9, 10]
let zipArr = zip(aArr,bArr)
print(zipArr.map{$0 * $1}.reduce(0, +))
이제 쓸맘이 생기셨나요?
짧은 내용을 쓸데없이 길게 써봤습니다.
긴글 읽어주셔서 감사합니다.
반응형
'Old_SWIFT(221012) > 함수이야기' 카테고리의 다른 글
<Filter> 함수 더하기 추론(조금...) (0) | 2021.11.12 |
---|---|
<Map> 함수 더하기 추론<조금>, <compactMap>, <flatMap> (0) | 2021.11.12 |
<components>, <split> (글자 자르기) (0) | 2021.11.10 |
<replacingOccurrences> (문자 변환) (0) | 2021.11.08 |
<enumarated> 함수 (0) | 2021.11.08 |