NIRVANA
[DAY-23] 프로그래머스 본문
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
'Coding test(Python3) > 스터디' 카테고리의 다른 글
[DAY-25] 프로그래머스 서울에서 김서방 찾기 (0) | 2024.06.28 |
---|---|
[DAY-24] 프로그래머스 두 정수 사이의 합 (0) | 2024.06.27 |
[DAY-22] 프로그래머스 x만큼 간격이 있는 n개의 숫자 (0) | 2024.06.24 |
[DAY-21] 백준 24511번 queuestack (0) | 2024.06.07 |
[DAY-20] 백준 2346번 풍선 터뜨리기 (0) | 2024.06.06 |