본문 바로가기

Programming Language/Javascript (Node.js)

[자바스크립트 프로그래밍 입문](2판) 연습문제 - Chapter04. 반복문

반응형

개인적으로 공부한 내용을 담은 포스팅이라 오타나 오류가 있을 수 있다는 점 참고 부탁드립니다~!

 

Chapter04. 반복문

 

 

01. 다음 괄호 안을 채우시오.

  • 자바스크립트에서 여러 개의 자료를 한꺼번에 다루고 싶을 때는 배열 자료형을 사용한다.
    ➡️ 해설: 배열(Array)은 여러 값을 하나의 변수로 다룰 수 있는 자료구조다.
  • 배열 안에 있는 각각의 자료를 요소라고 부른다.
    ➡️ 해설: 배열의 각 항목은 요소(Element)라고 한다.
  • 배열 범위를 넘는 요소에 접근하면 undefined 자료가 나온다.
    ➡️ 해설: 인덱스 범위를 벗어난 접근은 오류를 발생시키지 않고 undefined를 반환한다.
  • 무한하게 반복하는 반복문을 무한 반복문이라고 부른다.
    ➡️ 해설: 종료 조건 없이 무한히 반복되는 반복문을 말한다. while(true){} 구조가 예다.
  • 반복문을 강제로 벗어날 때는 break 키워드를 사용한다.
    ➡️ 해설: break는 반복문을 중간에 즉시 종료시킨다.
  • 반복문에서 다음 단계로 넘어갈 때는 continue 키워드를 사용한다.
    ➡️ 해설: continue는 현재 반복을 건너뛰고 다음 반복으로 넘어간다.
  • 스코프는 ‘변수를 사용할 수 있는 범위’를 나타낸다.
    ➡️ 해설: 스코프(Scope)는 변수의 유효 범위를 의미한다.
  • 과거의 자바스크립트에서는 변수를 만들 때 일반적으로 var 키워드를 사용했다.
    ➡️ 해설: ES6 이전에는 변수 선언에 var만 사용 가능했다.
  • 스코프 내에서 이름이 같아서 상위 스코프에 있는 변수를 가리키는 것을 섀도잉이라 부른다.
    ➡️ 해설: 하위 스코프에서 같은 이름의 변수를 새로 선언하면 상위 변수는 가려진다(Shadowing 현상).

 

 

02. 다음 질문에 OX를 표시하시오.

  • 배열을 만들 때는 [] 기호를 사용한다. O
  • 배열은 요소로 숫자, 문자열, 불 등 한 가지 자료형만 가질 수 있다. X
    ➡️ 해설: 자바스크립트 배열은 다양한 자료형 혼합 가능
  • 배열을 만들 때는 어떤 자료형의 배열인지 별도로 지정해야 한다. X
    ➡️ 해설: 자바스크립트는 동적 타입 언어로 자료형 지정 불필요
  • 배열의 범위를 넘는 요소에 접근하면 index out of range 오류가 발생한다. X
    ➡️ 해설: 오류 대신 undefined를 반환
  • 배열의 인덱스는 1부터 시작한다. X
    ➡️ 해설: 배열 인덱스는 0부터 시작함
  • while(true) {} 형태의 반복문은 무한하게 반복한다. O
  • while 반복문을 벗어나려면, 반복문의 불 표현식을 false로 만들 수 있는 조건이 필요하다. O
  • for in 반복문은 반복 변수에 요소가 들어간다. X
    ➡️ 해설: for in은 인덱스(키)를 반환. 요소가 들어가는 건 for of 반복문
  • for of 반복문은 반복 변수에 인덱스가 들어간다. X
    ➡️ 해설: for of는 실제 값(요소)을 반환
  • 반복문은 중첩해서 사용할 수 없다. X
    ➡️ 해설: 반복문은 중첩 가능하며 다중 반복 처리에 자주 사용됨

 

 

03. 배열 안에 있는 요소 수를 확인할 때 사용하는 식별자를 고르시오.

 

  1. size
  2. length
  3. capacity
  4. count

 

정답: 2번 length

 

해설: 자바스크립트 배열의 .length 속성은 배열 안의 요소 개수를 반환한다.

 

 

04. 다음 중 반복문과 관련되지 않은 키워드를 고르시오.

 

  1. for
  2. while
  3. break
  4. continue

 

정답: 3번 break


해설: for, while, continue는 반복문의 구조나 흐름을 제어하는 키워드. break는 반복문 내에서 동작하지만 '구조 키워드'는 아니다.

 

 

05. 다음 중 실행 때 오류가 발생할 수 있는 반복문의 기본 형태를 고르시오.

 

  1. while (조건_표현식) {}
  2. for (const 요소 of 배열) {}
  3. for (const 인덱스 in 배열) {}
  4. for (const i = 0; i < 반복_횟수; i++) {}

 

정답: 4번

 

해설: const로 선언된 변수 i를 i++로 증가시키면 재할당 시도가 되어 오류가 발생한다.

 

 

06. 다음 코드의 for 반복문을 while 반복문으로 바꿔 보시오.

 

for (let i = 0; i < 10; i++) {
  console.log("출력");
}

 

 

정답:

for (let i = 0; i < 10; i++) {
  console.log("출력");
}

 

해설: for문의 초기식, 조건식, 증감식을 while문 내부와 외부로 분리하여 동일한 반복을 구현할 수 있다.

 

 

07. 다음 코드의 실행 결과를 예측해 보시오.

for (let i = 0; i < 20; i = i + 2) {
  console.log("출력");
}

 

 

정답: "출력"이라는 문자열이 총 10번 출력됨

 

해설: i는 0부터 시작해서 2씩 증가하며 20 미만까지 반복된다 (0,2,4,…,18 → 10회).

 

 

08. 다음 출력 결과(피라미드 모양)를 생성하는 코드를 반복문으로 만들어 보시오.

       *
      ***
     *****
    *******
   *********
  ***********
 *************
***************

 

 

정답:

let space = 7; // 피라미드의 높이를 기준으로 공백 개수를 계산하기 위한 변수

// 0부터 7까지 총 8줄 반복 → 피라미드의 높이를 의미
for (let i = 0; i < 8; i++) {
  let line = ''; // 한 줄을 만들기 위한 문자열 변수 초기화

  // 왼쪽 공백 붙이기: 위로 갈수록 공백이 많고, 아래로 갈수록 공백이 줄어듦
  for (let j = 0; j < space - i; j++) {
    line += ' '; // 공백 추가
  }

  // 별 붙이기: 줄 번호가 커질수록 별의 개수가 홀수로 증가 (1, 3, 5, ...)
  for (let k = 0; k < 2 * i + 1; k++) {
    line += '*'; // 별 추가
  }

  console.log(line); // 완성된 한 줄 출력
}

 

 

09. for of 반복문을 for in 반복문으로 변경하시오.

let array = [52, 273, 32, 93, 103];

for (let element of array) {
  console.log(element);
}

 

 

정답:

let array = [52, 273, 32, 93, 103];

for (let index in array) {
  console.log(array[index]);
}

 

해설: for…of는 값(요소)을, for…in은 인덱스(키)를 반복한다.

 

 

10. 다음 코드에서 빈 부분을 구성해 배열의 가장 작은 수와 큰 수를 출력하는 프로그램을 작성하시오.

// 배열을 선언합니다.
let array = [273, 52, 103, 57, 271];

// 최소값과 최대값을 계산합니다.
let min = Number.MAX_VALUE;
let max = Number.MIN_VALUE;

// 구성합니다.
// (여기에 반복문 작성)

console.log(`가장 큰 수: ${max}`);
console.log(`가장 작은 수: ${min}`);

 

 

 

정답:

for (let value of array) {
  if (value > max) {
    max = value;
  }
  if (value < min) {
    min = value;
  }
}

 

해설: 배열의 각 값을 순회하며 최대값, 최소값을 갱신한다.

 

 

11. 배열 [52, 71, 32, 103, 273, 93]을 반복문을 사용하여 역순으로 출력하는 코드를 작성하시오.

정답:

let array = [52, 71, 32, 103, 273, 93];

for (let i = array.length - 1; i >= 0; i--) {
  console.log(array[i]);
}

 

해설: 마지막 인덱스부터 0까지 감소시키며 접근하면 역순 출력이 가능하다.

반응형