문제 설명
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
제한 조건
x는 -10000000 이상, 10000000 이하인 정수입니다.
n은 1000 이하인 자연수입니다.
1차 코드
func solution(_ x: Int, _ n: Int) -> [Int] {
return Array(stride(from: x, to: x * (n + 1), by: x))
1차 결과
1차 진단
코드가 돌지도 않았다. 많은 고민 끝에 stride로 배열 채우기를 쓰기엔 실력이 안된다고 생각했다.
stride로 for문을 돌려서 그 안에서 배열을 하나씩 채워야겠다는 생각을 했다.
2차 코드
func solution(_ x:Int, _ n:Int) -> [Int64] {
var ans: [Int64] = []
for i in stride(from: 0, to: n, by: 1) {
ans.append(Int64(x + x * i))
}
return ans
}
2차 결과
추가 의견
모두 통과는 했지만 이럴거면 stride를 굳이 왜 썼나싶을 정도로 의미가 없다고 느꼈다.
그렇다고 그냥 for문에 append만 끼우기엔 뭔가 stride가 무조건 쓰고싶을 정도로 집착이 느껴지는 문제였던 것 같다.
stride로 x가 계속 뻗는데 그걸 바로 배열에 찍을 수 있는 함수를 찾아보는데 배열을 새롭게 생성하는 함수 map을 발견했다.
각 요소에 변동이 있을 때 유용한 것 같다.
최종 코드
func solution(_ x: Int, _ n: Int) -> [Int64] {
return Array(stride(from: Int(x), to: x * (n + 1), by: x).map { Int64($0) })
}
미흡했던 점
stride를 쓰면 된다는 것을 알면서도 결국 for문과 다를 바 없는 바보같은 코드로 통과했다고 좋아했었던 점
stride를 제대로 쓸 줄 몰라서 자신감을 잃고 방향을 바꿔보려했던 점
'iOS > Programmers' 카테고리의 다른 글
[Swift] lv.1 자릿수 더하기 | Programmers (0) | 2024.02.21 |
---|---|
[Swift] lv.1 나머지가 1이 되는 수 찾기 | Programmers (1) | 2024.02.15 |
[Swift] lv.1 약수의 합 | Programmers (0) | 2024.02.06 |
[Swift] lv.1 평균 구하기 | Programmers (0) | 2024.02.02 |
[Swift] lv.1 짝수와 홀수 | Programmers (0) | 2024.01.29 |