1번부터 N번까지 번호표 만들기

자바스크립트 코딩테스트 문제로 array-creation-methods 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.

js-basic easy array-creation-methods 함수명: buildSeatNumberList 제한 시간: 200ms

숫자 n이 주어질 때, 1부터 n까지 순서대로 담긴 배열을 만드는 문제입니다.

오늘의 메서드

  • Array.from()

메서드 설명

  • Array.from()은 배열처럼 길이를 가진 값을 진짜 배열로 만들 때 자주 쓰는 메서드입니다.
  • 두 번째 인수로 함수를 넣으면 각 위치의 값을 원하는 규칙으로 바로 만들 수 있습니다.
  • 이 문제에서는 인덱스 0, 1, 2, ...를 이용해 1, 2, 3, ... 형태의 번호표 배열을 만들면 됩니다.

기본 문법

Array.from({ length: n }, (_, index) => index + 1)

사용 예시

Array.from({ length: 5 }, (_, index) => index + 1)
// [1, 2, 3, 4, 5]

Array.from({ length: 0 }, (_, index) => index + 1)
// []

주의할 점

  • Array.from()의 첫 번째 인수로는 { length: n }처럼 길이 정보가 있는 객체를 넣을 수 있습니다.
  • 인덱스는 0부터 시작하므로 번호를 만들 때는 index + 1로 바꿔야 합니다.
  • 원본 배열을 바꾸는 문제가 아니라, 새 배열을 만드는 문제입니다.
  • n0이면 빈 배열 []을 반환해야 합니다.

제한사항

  • n0 이상 100 이하의 정수입니다.
  • 반환값은 1부터 n까지의 정수를 순서대로 담은 배열입니다.
  • n0이면 빈 배열을 반환합니다.

예시

  • 입력: n = 5 → 출력: [1, 2, 3, 4, 5]
  • 입력: n = 1 → 출력: [1]
  • 입력: n = 0 → 출력: []

힌트

  • 먼저 길이가 n인 빈 틀을 만든다고 생각해 보세요.
  • 각 칸에는 실제 값 대신 현재 위치 번호를 넣으면 됩니다.
  • 인덱스가 0부터 시작한다는 점만 조심하면 Array.from() 하나로 해결할 수 있습니다.

해설

이 문제의 핵심은 반복문 없이 규칙적인 숫자 배열을 만드는 것입니다. 이런 상황에서는 Array.from()이 잘 맞습니다.

Array.from({ length: n }, (_, index) => index + 1)는 다음 순서로 동작합니다.

  1. { length: n }으로 길이가 n인 배열 같은 대상을 준비합니다.
  2. 각 위치마다 index를 전달받습니다.
  3. index0부터 시작하므로 index + 1을 반환합니다.
  4. 그 결과가 모여 [1, 2, 3, ..., n] 배열이 됩니다.

예를 들어 n = 5라면 각 위치에서 만들어지는 값은 다음과 같습니다.

  • index 0 → 1
  • index 1 → 2
  • index 2 → 3
  • index 3 → 4
  • index 4 → 5

그래서 최종 결과는 [1, 2, 3, 4, 5]입니다.

n = 0이면 길이가 0인 배열을 만들기 때문에 별도 분기 없이도 빈 배열 []이 자연스럽게 반환됩니다.

function buildSeatNumberList(n) {
  return Array.from({ length: n }, (_, index) => index + 1);
}

이 문제를 통해 Array.from()길이 정보를 바탕으로 새 배열을 생성할 때 매우 편리한 메서드라는 점을 익힐 수 있습니다.

코드 작성

starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.

JavaScript 에디터 로딩 중...

커스텀 테스트

함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]

아직 실행하지 않았습니다.

실행 결과

아직 실행하지 않았습니다.

예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.

댓글

문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.