231117 TIL

chillakilla·2023년 11월 20일

나머지가 1 이 되는 수 찾기

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

입출력 예

솔루션 코드

<script>
function solution(n) {
  let x = 1;
  while (n % x !== 1) {
    x++;
  }

  return x;
}
</script>
  • x 를 1이라 할당.
  • while문을 사용해 입력 받은 n 을 x로 나눈 후, 나머지가 1 이 아닐 때까지 실행.
  • 그 과정에서 x 는 점차 증가.
  • 입출력 예시의 10 을 대입해보자면.
  • 첫번째는 1로 나누고, 두 번재는 2로 다시 나누고 하면서 점차 증가.
  • 그렇게 3 의 차례 때, 나머지가 1 이 나옴.
  • 2로 나누면 나머지가 0, 4로 나누면 나머지가 2, 5로 나누면 나머지 0...등등
  • 하지만 결국 질문자가 원하는 답은 나머지가 1 이 되는 가장 작은 자연수 x라고 했음.
  • 그러니 return 값은 3.

While

while 문은 조건문이 참일 때 실행되는 반복문이다. 조건은 문장안이 실행되기 전에 참, 거짓을 판단한다.

<script>
var n = 0;
var x = 0;

while (n < 3) {
  n++;
  x += n;
}
</scrip>

사용 예시

반복을 살펴보면, n을 x에 계속 더하게 된다. 그러므로 x와 n 변수는 다음의 값을 갖는다.

  • 첫번째 반복; n=1 과 x=1
  • 두번째 반복; n=2 과 x=3
  • 세번째 반복; n=3 과 x=6

세번째 반복후, n<3 이라는 초건은 더 이상 참이아니가 되므로 반복은 종료된다

앞으로도 이런 식의 문제가 많이 있을 것 같으니, 이것만큼은 외워둬도 괜찮을 것 같다.
특히 parseInt, toString, map, join 과 같은 놈들과 묶어서 말이다.

profile
꾸준하려 하는 쉽덕놈

0개의 댓글