문제 출처 : 프로그래머스

문제는 여기에


문제

  • 자연수 n이 매개변수로 주어진다.
  • n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return하는 solution 함수를 완성해라

 

입출력 예

 

접근

1. for문을 돌리면서 나머지가 1인 것들을 찾아야겠다.

 

나의 코드

def solution(n):
    result = []
    for i in range(2,n):
        if n % i == 1:
            result.append(i)
    answer = min(result)
    return answer

 

고찰

나는 별 생각없이 n을 x로 나눈 나머지가 1인 것들을 모두 찾아 리스트에 추가하였고

그 리스트들 중에서 가장 작은 수를 return 하는 방법을 했는데

생각해보니 n-1까지 for문을 돌면서 나머지가 1인 것들을 모두 찾는 것은 비효율적이라는 것이다.

나머지가 1이 되는 것을 찾으면 반복을 빠져나오자

수정한 코드

def solution(n):
    for i in range(2,n):
        if n % i == 1:
            break
    answer = i
    return answer