프로그래머스 알고리즘

윱니·2023년 11월 20일

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


(1) 나의 풀이

function solution(n) {
    for (let x=2; x<n; x++) {
        if (n % x === 1) {
            return x
        }
    }
}

=> 제한조건을 보면 n이 3이상이므로, 나누는 수의 최솟값이 1이 될 수 없기 때문에 for문의 초기값을 2로 지정하였다.

(2) 다른 사람의 풀이

function solution(n, x = 1) {    
    while (x++) {
        if (n % x === 1) {
            return x;
        }
    }    
}

=> while문을 사용하여 보다 간결하게 풀었다.

2. x만큼 간격이 있는 n개의 숫자


(1) 나의 풀이

function solution(x, n) {
  var answer = [];
  for (let i = 1; i <= n; i++) {
    answer.push(x * i);
  }
  return answer;
}

=> answer이 배열을 반환하기 때문에 빈배열을 먼저 만들었고, for문을 통해 i를 n까지 증가시키면서 그 값을 push를 사용하여 값을 담아야한다고 생각했다. x씩 증가하는 숫자들이므로 x를 곱해서 배열에 넣으면 되겠다고 생각했다.

(2) 다른 사람의 풀이

function solution(x, n) {
    return Array(n).fill(x).map((v, i) => (i + 1) * v)
}

=> n개의 길이를 갖는 배열을 만들고, fill(x)를 통해 그 배열안의 값을 모두 x로 만들었다. (시작점이 x이므로) 그리고 map을 통해 반복할 행위를 지정해줬는데, 배열의 모든 요소를 돌면서 x를 곱하는 행위이다. i + 1로 만들어준 이유는 인덱스는 0부터 시작하기 때문이다. 각 요소마다 x를 곱하면서 배열을 채우고 값을 리턴할 수 있다.

profile
코린이 탈출을 기원하는 코린이

0개의 댓글