Description
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
Constraints
3 ≤ n ≤ 1,000,000
My Solution
function solution(n) {
for (let i = 2; i < n; i++) {
if (n % i === 1) return i;
}
}
for문의 초기값을 let i = 2로 지정하였다.
제한 조건에서 n은 3 이상이므로, 나누는 수(i)의 최솟값이 1이 될 순 없기 때문에 1이 아닌 2부터 시작하였다.
Other's Solutions
function solution(n) {
let answer = 0;
for (let i = 0; i < n; i++) {
if (answer > 0) {
break;
}
if (n % i == 1) {
answer = i;
}
}
return answer;
}
while문을 활용하여 for문을 쓸 때보다 간결하게 풀어낼 수도 있다.
function solution(n, x = 1) {
while (x++) {
if (n % x === 1) return x;
}
}
function solution(n) {
let answer = 1;
while (n % answer != 1) answer++;
return answer;
}
'Algorithms > Programmers' 카테고리의 다른 글
[프로그래머스 Level 1] 2016년 (자바스크립트) (0) | 2021.10.19 |
---|---|
[프로그래머스 Level 1] 핸드폰 번호 가리기 (자바스크립트) (0) | 2021.10.18 |
[프로그래머스 Level 1] 가운데 글자 가져오기 (자바스크립트) (0) | 2021.10.17 |
[프로그래머스 Level 1] 나누어 떨어지는 숫자 배열 (자바스크립트) (0) | 2021.10.16 |
[프로그래머스 Level 1] 두 정수 사이의 합 (자바스크립트) (0) | 2021.10.16 |