서론
없음.
문제
문제 설명
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
제한사항
- 3 ≤ n ≤ 1,000,000
나의 풀이
def solution(n):
answer = n-1
for i in range(2,(n-1)//2):
if (n-1)%i==0:
answer= i
break
return answer
n의 나머지가 1이되는 숫자를 찾는 문제이기에 n-1의 약수 중에서 1을 제외한 가장 작은 숫자를 찾는 문제라고 생각하였다.
약수를 구할 때 전체 숫자를 확인할 필요없이 절반만 확인하면 반대편 숫자도 구할 수 있기 때문에 for loop의 범위를 (n-1)//2로 설정하였다.
그리고 작은 값부터 loop을 돌며 나머지를 1로 만드는(풀이에서는 n-1을 0으로 만드는) 값을 구한다. 만약, 값이 없다면 해당 값은 소수이기에 n-1을 그대로 출력시킨다.
+ 피드백과 새로운 풀이 방법은 언제든지 환영입니다!
'코딩테스트 > [python]프로그래머스' 카테고리의 다른 글
[python] 프로그래머스 87390 : n^2 배열 자르기 (0) | 2022.04.13 |
---|---|
[python] 프로그래머스 70129 : 이진 변환 반복하기 (0) | 2022.04.12 |
[python] 프로그래머스 12948 : 핸드폰 번호 가리기(Level 1) (0) | 2022.04.06 |
[python] 프로그래머스 12950 : 행렬의 덧셈(Level 1) (0) | 2022.04.06 |
[python] 프로그래머스 Level 1 : 문자열을 정수로 바꾸기 (0) | 2022.03.24 |
댓글