JS

[JS] 자바 학습전략+반복문 기본

coco030030 2025. 4. 3. 15:55

추천 학습 전략

  1. 개념의 분해와 논리적 연결
    • 큰 개념을 작은 조각으로 분해하여 이해
    • 각 개념이 어떻게 서로 연결되는지 마인드맵 작성
  2. 점진적 난이도 증가
    • 기본 예제 → 약간 변형된 예제 → 중간 난이도 → 고난도
    • 각 단계마다 "내가 왜 이 코드를 작성하는지" 주석으로 설명해보기
  3. 역공학적 접근
    • 완성된 코드를 보고 각 부분이 어떤 역할을 하는지 분석
    • 코드의 일부를 의도적으로 변경하여 어떤 결과가 나오는지 실험
  4. 개인화된 문서화
    • 자신만의 방식으로 개념을 재정의하고 문서화
    • 예제에 본인이 이해한 방식으로 주석 달기
  5. 실용적 목표 설정
    • 각 학습 세션마다 달성 가능한 작은 목표 설정
    • 성취감을 느낄 수 있는 작은 프로젝트 만들기

자바스크립트 반복문 개념 정리

1. 반복문의 본질적 목적

반복문은 동일한 작업을 여러 번 수행해야 할 때 코드의 중복을 줄이기 위한 도구입니다. 컴퓨터가 반복 작업을 잘하는 특성을 활용하는 것입니다.

2. for 반복문

// 기본 구조: for(초기화; 조건; 증감)
for(let i = 0; i < 5; i++) {
    console.log(i); // 0, 1, 2, 3, 4 출력
}

왜 사용하는가?

  • 반복 횟수가 명확할 때 적합
  • 초기화, 조건, 증감을 한 줄에 모두 표현하여 가독성이 좋음
  • 배열의 각 요소를 인덱스로 접근할 때 유용

실제 활용 예시:

// 배열의 모든 요소에 10을 더하기
const numbers = [5, 10, 15, 20];
for(let i = 0; i < numbers.length; i++) {
    numbers[i] += 10;
}
console.log(numbers); // [15, 20, 25, 30]

3. while 반복문

// 기본 구조: while(조건)
let count = 0;
while(count < 5) {
    console.log(count); // 0, 1, 2, 3, 4 출력
    count++;
}

왜 사용하는가?

  • 반복 횟수가 불명확하고 특정 조건이 만족될 때까지 반복해야 할 때 적합
  • 조건만 중요할 때 코드가 더 간결해짐
  • 사용자 입력이나 데이터 스트림 처리에 유용

실제 활용 예시:

// 사용자가 올바른 비밀번호를 입력할 때까지 반복
let password = "";
while(password !== "secret") {
    password = prompt("비밀번호를 입력하세요:");
}
console.log("로그인 성공!");

4. do-while 반복문

// 기본 구조: do { } while(조건);
let count = 0;
do {
    console.log(count); // 0, 1, 2, 3, 4 출력
    count++;
} while(count < 5);

왜 사용하는가?

  • 조건 확인 전에 코드를 최소 한 번은 실행해야 할 때 적합
  • 사용자 입력을 처음에 받고 그 후에 유효성을 검사할 때 유용
  • 조건이 처음부터 false여도 코드 블록이 한 번은 실행됨

실제 활용 예시:

// 사용자에게 최소 한 번은 입력 받기
let userInput;
do {
    userInput = prompt("1부터 10 사이의 숫자를 입력하세요:");
} while(userInput < 1 || userInput > 10);
console.log(`선택한 숫자: ${userInput}`);

5. break와 continue

break - 반복문을 즉시 종료

for(let i = 0; i < 10; i++) {
    if(i === 5) {
        break; // i가 5가 되면 반복문 종료
    }
    console.log(i); // 0, 1, 2, 3, 4만 출력
}

continue - 현재 반복을 건너뛰고 다음 반복으로 진행

for(let i = 0; i < 10; i++) {
    if(i % 2 === 0) {
        continue; // i가 짝수면 아래 코드 실행하지 않고 다음 반복으로
    }
    console.log(i); // 1, 3, 5, 7, 9만 출력
}

왜 사용하는가?

  • break: 특정 조건이 충족되면 더 이상 반복이 필요 없을 때
  • continue: 특정 조건에서는 처리를 건너뛰고 나머지 경우만 처리할 때

6. for-in 반복문

// 객체의 속성을 반복
const person = {
    name: "Kim",
    age: 30,
    job: "Developer"
};

for(let key in person) {
    console.log(`${key}: ${person[key]}`);
    // "name: Kim", "age: 30", "job: Developer" 출력
}

왜 사용하는가?

  • 객체의 모든 열거 가능한 속성을 순회할 때 적합
  • 키-값 쌍으로 이루어진 데이터 구조를 처리할 때 유용
  • 객체 속성 검사나 필터링에 활용

7. for-of 반복문

// 반복 가능한 객체(배열, 문자열 등)의 요소를 반복
const fruits = ["Apple", "Banana", "Cherry"];

for(let fruit of fruits) {
    console.log(fruit);
    // "Apple", "Banana", "Cherry" 출력
}

왜 사용하는가?

  • 배열이나 다른 이터러블 객체의 값에 직접 접근할 때 적합
  • 인덱스가 필요 없고 값만 필요할 때 코드가 간결해짐
  • 문자열의 각 문자, Map, Set 등 다양한 이터러블 객체에 사용 가능

개념을 이해하는 방법

  1. 목적 먼저 이해하기: 각 반복문이 왜 존재하는지, 어떤 문제를 해결하기 위해 만들어졌는지 이해
  2. 차이점 비교하기:
    • for vs while: 반복 횟수가 명확한가? vs 조건이 중요한가?
    • while vs do-while: 조건을 먼저 확인? vs 실행 후 조건 확인?
    • for-in vs for-of: 객체 속성 순회? vs 이터러블 값 순회?
  3. 실험하기: 코드를 조금씩 변형하며 결과 확인
  4. // 다양한 실험 for(let i = 0; i < 3; i++) { console.log("반복 " + i); } // 변형 1: 증감식 변경 for(let i = 0; i < 6; i += 2) { console.log("2씩 증가 " + i); // 0, 2, 4 } // 변형 2: 초기값 변경 for(let i = 1; i <= 3; i++) { console.log("1부터 시작 " + i); // 1, 2, 3 }
  5. 실제 문제에 적용해보기:
    • 배열에서 특정 값 찾기
    • 객체에서 특정 조건의 속성만 추출하기
    • 특정 패턴의 문자열 생성하기