Coding test(Python3)/스터디
[DAY-23] 프로그래머스
녜잉
2024. 6. 26. 15:39
1. 문제
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
제한사항
- 3 ≤ n ≤ 1,000,000
2. 문제 풀이 방법
10 - 1 = 9
12 - 1 = 11
7 - 1 = 6
과 같이 n을 1로 나누었을 때 나오는 몫을 소인수 분해하면, n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 찾을 수 있는 것을 확인할 수 있다.
1) n-1 값이 소수인지 확인한다.
2) 만약 n-1이 소수라면 바로 값을 return한다.
3) n-1이 소수가 아니라면 n-1의 약수를 구한 뒤 가장 작은 약수를 반환한다.
def solution(n):
answer = 0
N = n-1
divisor = []
for i in range(2, N):
if N % i == 0:
divisor.append(i)
answer = divisor[0]
break
else:
answer = N
return answer