파이썬 코드카타

나머지가 1이 되는 수 찾기 # range()

여연찌 2024. 3. 28. 16:18
  • 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
def solution(n):
    for x in range(2,n+1):
        if n%x==1:
            return x

#

나머지가 1이 되어야 하니까 답이 될 수 있는 가장 작은 수인 2부터 n 까지의 범위

나머지가 1이 나오는 x 값을 출력

 

 

 

 


 

 

Q. 다른 풀이를 보니 range(2, n) 으로 하는데 왜일까?

A.

x 가 n 을 나눴을 때 1이 나오는 값을 찾아야하는데,

n % n = 0 이기 때문에 x 값의 범위를 n-1 까지의 범위를 주는 것

 

* if 문에서 나머지가 1인 경우에만 범위를 찾기 때문에

n 이어도 어차피 n-1에서 반복문이 끝나기 때문에 통과는 되지만

예외 처리를 확실하게 하는것이 좋기 때문에 n-1 까지만 설정되도록 하는것이 좋다