🔴 문제
(문제 링크: 프로그래머스)
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution 을 완성해주세요.
제한 조건
- x는 -10000000 이상, 10000000 이하인 정수입니다
- n은 1000 이하인 자연수입니다.
🔵 풀이
1. 초기 풀이
func solution(_ x:Int, _ n:Int) -> [Int64] {
var numbers: [Int64] = []
// guard문으로 제한 조건 확인하기
guard (x >= -10000000 && x <= 10000000) && (n <= 1000) else {
return []
}
for i in 1...n {
numbers.append(Int64(i * x)) // x, i가 Int이므로 Int64로 변환
}
return numbers
}
2. 궁금한 점
처음 함수 정의할 때 아래 두 코드 중 1번은 되고 2번은 안 되는데,
그 이유를 모르겠다...
- func solution(_ x:Int, _ n:Int) -> [Int64]
- func solution(_ x:Int64, _ n:Int64) -> [Int64]
>> 동료분께서 알려주셨는데, 프로그래머스에서 제한조건으로 들어오는 파라미터는 타입이 정해져 있기 때문에 변경하면 에러가 발생한다고 한다.
3. 다른 풀이 - map 이용
고차함수 map을 이용한 풀이도 있다.
func solution(_ x:Int, _ n:Int) -> [Int64] {
return Array(1...n).map { Int64($0 * x) }
}
map에 대해서도 알아봐야겠군....
> 고차함수 정리 : (링크)