Swift | programmers/Lv1.
Lv1.x만큼 간격이 있는 n개의 숫자
iOSDEv
2024. 2. 2. 10:16

그외 풀이
//map 고차함수를 이용하여 걸러냄
func solution(_ x:Int, _ n:Int) -> [Int64] {
return Array(1...n).map { Int64($0 * x) }
}
프로그래머스에서 문제를 풀 때 고차함쉐 대해서 많이 다루기 때문에 다음에 한 번에 정리를 하고 자주 사용해서 편하게 이용하자
func solution(_ x:Int, _ n:Int) -> [Int64] {
return x == 0
? Array(repeating: 0, count: n)
: Array(stride(from: x, through: x * n, by: x)).map{ Int64($0) }
}
- Array 생성
- var array = [Int](repeating: 0, count: 10)
- 생성과 동시에 10개의 element 생성
- var array = [Int](repeating: 0, count: 10)

- stride(from:to:by:)
- start : 시작할 값
- end : 종료값 (포함요소가 아님)
- by / through : by / end는 시퀀스를 제한하는 종료의 값
- by : 마지막 결과값을 포함하지 않음
- through : 마지막 결과값을 포함


func solution(_ x:Int, _ n:Int) -> [Int64] {
return Array(repeating: x, count: n).enumerated().map{Int64(($0.offset+1)*$0.element) }
}
- offset이란? 인덱스 접근
- 우선 Array(repeating:count:)생성자를 사용해서 x를 n개의 배열을 생성
- enumerated()호출해서 각 원소에 대한 인덱스와 값을 포함하는 튜플의 시퀀스를 생성하게됨
- map함수를 사용하여 클로저를 사용했음
- offset(==index)과 element(==value)을 이용
- 여기서 offset + 1 을 사용하는 이유는? 첫 번째 항이 1부터 시작하기 때문에
- 계산은 (offset + 1) * element
- offset(==index)과 element(==value)을 이용

- enumerated()
- c#에서 많이 사용했던 친구였는데 swift에도 있다
- 쉽게 말하자면 (n,x) 튜플 형태로 리턴을 한다
