본문 바로가기
코테연습

67. 나머지가 1이 되는 수 찾기

by hxunz 2022. 6. 22.

https://programmers.co.kr/learn/courses/30/lessons/87389

 

코딩테스트 연습 - 나머지가 1이 되는 수 찾기

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

programmers.co.kr

 

1. 문제에 대한 이해

  • 우리가 풀어야 할 문제는 무엇인가?
     - n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 
  • 주어진 자료는 무엇인가?
     - 자연수 n
  • 조건은 무엇인가?
     -
    3 ≤ n ≤ 1,000,000

 

2. 계획

  • 이 문제를 푸는데 있어서 유용하게 쓸 수 있는 지식은 무엇인가?
     - % 나머지 구하는 연산자
     - filter

 

  1. n까지의 숫자를 담은 배열을 만든다
  2. 이 배열을 돌면서 나머지를 구하는 연산자를 실행시킨다.
  3. 이때 몫이 1인 경우 리턴해준다.

 

3. 실행

  • 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
const solution = (n) => {
  let numbers = [];
  for (i = 1; i <= n; i++) {
    numbers.push(i);
  }

  const number = numbers.filter(num => n % num === 1);
  return number[0];
};

test('findNumber', () => {
  expect(solution(10)).toEqual(3);
  expect(solution(12)).toEqual(11);
});

 

 

이번에는 쉬운 문제여서 문제를 보자마자 나머지 구하는 연산자 사용해서 값을 리턴하면 되겠다는 생각이 들었다.
나는 filter를 사용했는데 나머지가 1이되는 모든 숫자가 나온다.
그런데 나는 나머지가 1이 되는 첫번째 숫자만을 구하면 되니까 배열의 0번째를 리턴해주었다.
 
다른 사람이 푼 과정을 보니 while을 사용해서 엄청 간단하게 나타냈고 매개변수로 정수 1을 넣어준것도 괜찮은 방법 같다.
숫자 배열을 만드는 과정을 for문이 아니라 다른 방법이 있을지 생각해봐야겠다.

 

'코테연습' 카테고리의 다른 글

69. 가장 큰 수 Javascript  (0) 2022.06.24
68. 같은 숫자는 싫어 Javascript  (0) 2022.06.23
66. 2016년 Javascript  (0) 2022.06.21
65. 두 개 뽑아서 더하기  (0) 2022.06.20
63. 다트 게임  (0) 2022.06.15

댓글