[Programmers] 나머지가 1이 되는 수 찾기

sunriseGong·2021년 11월 3일
0

문제

https://programmers.co.kr/learn/courses/30/lessons/87389

자연수 n이 매개변수로 주어집니다.

n을 x로 나눈 나머지가 1이 되도록 하는
가장 작은 자연수 x를 return 하는 함수를 작성하세요.

나의 풀이

function solution(n) {
    let maxNum = n - 1;
    
        for (let i = 2; i <= maxNum / 2; i++) {
            if (maxNum % i === 0) return i;
        }
    
    return maxNum;
}

maxNum : 나머지가 1인 최대값은 n-1 이다.

약수는 자신을 제외하고 절반이 최대값이다.
ex) 12 -> 1,2,3,4,6,12
2부터 6까지만 순회해도 12의 약수를 전부 구할 수 있다.

끝까지 순회하면서 값을 찾는 것 보다. 절반가량 일을 덜하게 된다.

고로 maxNum/2 까지 순회하면서
약수가 발견되는 순간 그 값이
나머지가 1이 되는 최소값이므로
바로 리턴하고

절반까지 순회했는데도 약수가 없는 경우는
ex) 17 -> 1, 17
이런 경우 이므로
그대로 maxNum 을 리턴한다.

profile
심심해야 공부하게 된다.

0개의 댓글