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>은 조건이 충족될 때 액션을 반복시키는 반복문이다!