문제 설명
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
제한사항
3 ≤ n ≤ 1,000,000
입출력 예
n result
10 3
12 11
너무 쉬워서 내가 뭔가 놓치고 있는 거라고 생각했다.
function solution(n) {
let i=2;
do {
if (n%i===1) {
return i;
break;
} else {
i++;
}
} while (i<n);
}
다행히 통과했다.
다른 분들의 답을 보며 더 간단하게 적을 수 있는 법을 모색했다.
function solution(n, x = 1) {
while (x++) {
if (n % x === 1) {
return x;
}
}
}
function solution(n, x = 0) {
return n % x === 1 ? x : solution(n, x + 1);
}
while문을 if문 밖에 감싸는 용도로 썼다는 점과, 삼항연산자 및 재귀를 통해 한 줄로 간단히 끝낸 게 멋졌다...
while과 if를 어떻게 사용하는 지가 생각보다 다양한 것이 재밌다.