:ledger: 문제 설명

자연수 n이 매개변수로 주어집니다.
nx로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요.
답이 항상 존재함은 증명될 수 있습니다.

:one: 제한사항

  • 3 ≤ n ≤ 1,000,000

:two: 입출력 예

N result
10 3
12 11

:three: 입출력 예 설명

:pushpin: 3-1) 입출력 예 설명 #1

10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다.

:pushpin: 3-2) 입출력 예 설명 #2

12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다.

:four: 프로그래머스에서 제공한 코드

처음 프로그래머스에서 작성된 코드는 아래와 같다.

function solution(n) {
    var answer = 0;
    return answer;
}

:ledger: 문제 풀이

const solution = n => {
  for(let i = 0; i <= n;  ++) {
    if(n % i === 1) return i;
  }
}

:one: 함수 선언

  • 화살표 함수를 사용하여 n 매개변수를 받는다.

:two: 풀이

  • x 는 n을 나눠 나머지가 1이 되어야 하기에, for 반복문을 실행하고, if문으로 n % i === 1 되는 값을 return 하여 함수를 종료한다.

:three: 결과 반환

  • 매개변수 n에 10을 대입하면 10 % i(3) === 1; // 3
  • 매개변수 n에 12을 대입하면 12 & i(11) === 1; // 11

:four: 실행

  • console.log(solution(10)) 실행하면 3가 출력된다.
  • console.log(solution(12)) 실행하면 11이 출력된다.

:fire: 다른 사람의 풀이 참고

댓글에 가장 이해하기 쉬운 코드라고 적혀있어서 흡족했으나, 아래의 댓글에 “이건 레벨0짜리임” 이라고해서 조금 섭섭하지만 만족!

// [2명] for 반복문을 사용한 풀이방식
const solution = function(n) {
    for (let i=0; i<n; i++){
        if (n%i == 1){
            return i
        }
    }
}

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges