The journey to becoming a developer

My future is created by what I do today, not tomorrow.

Algorithms/Programmers

[프로그래머스 Level 1] 나머지가 1이 되는 수 찾기 (자바스크립트)

Millie 2021. 10. 17. 21:30

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;
}