자연수 n
이 매개변수로 주어집니다. n
을 x
로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x
를 return
하도록 solution
함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
n
≤ 1,000,000n | result |
---|---|
10 | 3 |
12 | 11 |
입출력 예 #1
10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다.
입출력 예 #2
12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다.
import Foundation
func solution(_ n:Int) -> Int {
// 2부터 n-1까지 1증가하는 반복문 실행
for i in 2..<n {
// 나머지가 1이 되는 수가 있다면, i를 반환
if n%i == 1 {
return i
}
}
return 0
}
시간 복잡도는 최대 O(n-2) 입니다.
이렇게 간단한 문제를 더 간단하게 return 으로만 작성할 수 있을 것 같아서 다른 사람들의 풀이를 참고해봤어요~!
import Foundation
func solution(_ n:Int) -> Int {
return (1...n).filter{n % $0 == 1}.min()!
}
filter 문법과 클로저 함수를 사용해서 이렇게도 나타낼 수 있었습니다.
다음 문법 포스터는 클로저 함수를 정리해봐야겠습니다~!