[문제 설명]
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
[제한사항]
[입출력 예]
[입출력 예 설명]
입출력 예 #1
10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다.
입출력 예 #2
12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다.
나의 풀이
def solution(n):
for i in range(1,n):
if n%i == 1:
answer =i
break
return answer
문제가 쉬웠다! 다양한 풀이법이 있는데 모두 알아두자~😇
다른 사람의 풀이 #1
def solution(n):
answer = 0
for divisior in range(2, (n-1//2) +1) : #2부터~반값까지
if (n-1) % divisior == 0: #약수가 있다면
answer = divisior
break #탈출
else:
answer = n-1 #약수가 없다면 본인
return answer
다른 사람의 풀이 #2
def solution(n):
answer = min([x for x in range(1, n+1) if n % x == 1])
return answer
다른 사람의 풀이 #3
def solution(n):
if not 3 <= n <= 1000000 :
return False
answer = 2
while True :
if n % answer == 1 :
break
else :
answer += 1
return answer