Swift/Code Kata (알고리즘)
[Swift|코드카타] (프로그래머스) 입문 #15. 나머지가 1이 되는 수 찾기
yurim-dev
2024. 2. 9. 14:38
🔴문제
- 문제 : 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
- 제한사항 : 3 ≤ n ≤ 1,000,000
🔵풀이
1. 초기 풀이
1부터 n까지 차례대로 나눠보다가 나머지가 1이 되는 숫자가 발견되면 바로 return하면 된다.
import Foundation
func solution(_ n:Int) -> Int {
var x = 0
for i in 1...n where x == 0 {
if n % i == 1 {
x = i
}
}
return x
}
2. 풀이 개선 - break 활용
그런데 굳이 for...in 반복문에 where조건문을 쓰지 않아도,
while 반복문에 break을 활용하면 맞는 'x'를 찾는 즉시 loop를 빠져나오게 할 수 있다.
import Foundation
func solution(_ n: Int) -> Int {
var x = 1
while true {
if n % x == 1 { break }
else { x += 1 } // x += 1을 else 밖으로 빼도 됨
}
return x
}
3. 체크 ; where vs. while
where 과 while 혼동하지 말기!!!
<where>은 for..in 구문에 조건 달 때 쓰는 것이고,
<while>은 조건이 충족될 때 액션을 반복시키는 반복문이다!