1. 반복문의 개요

  • 필요성

    • 똑같은 작업이나 규칙적인 작업을 여러 번 수행해야 할 때,
    • 코드를 복사·붙여넣기 하는 대신 효율적으로 처리하기 위함
  • 제어 구조

    • 순차 구조, 선택 구조와 함께 프로그램의 3대 제어 구조 중 하나
  • 종류

    • 횟수 제어 반복(for 문): 정해진 횟수만큼 반복 (예: 10번 출력)
    • 조건 제어 반복(while 문): 특정한 조건이 만족되는 동안 계속 반복 (예: 정답을 맞힐 때까지)

2. 핵심 문법 및 기능

2.1. 리스트 - for문의 기초

  • 리스트(List)
    • 여러 데이터를 묶어서 저장하는 자료구조
    • 인덱스: 0부터 시작하며, list[0] 등으로 접근한다.
    • 동적 추가: list.append(값)을 통해 항목을 추가할 수 있다.

2.2. for문(횟수 반복)

  • 구조: for 변수 in 시퀀스(리스트 등): 형태

  • 특징: 리스트나 range()의 항목들을 하나씩 가져와서 반복 실행한다.

  • range() 함수: 수열을 생성하여 반복 횟수를 지정할 때 주로 사용한다.

    • range(종료값): 0부터 종료값-1까지 생성
    • range(시작값, 종료값): 시작값부터 종료값-1까지 생성
    • range(시작값, 종료값, 증가값): 간격을 두고 생성 (역순 가능)

2.3. while문(조건 반복)

  • 구조: while 조건식: 형태

  • 특징: 조건식이 True인 동안 계속 문장을 실행한다.

  • 주의사항

    • 조건이 항상 True이면 무한 루프(Infinite Loop)에 빠지므로,
    • 내부에서 조건을 False로 변경하거나 break를 사용하는 로직이 필요하다.
  • cf.

    • Python에서는 특이하게도 while 루프에 else를 붙일 수 있다.
    • else는 조건식이 False로 평가되면 실행된다.
    • 만약 while loop가 break 문으로 종료되면 else는 무시된다.

2.4. 흐름 제어 키워드

  • break: 반복문을 즉시 탈출한다.
  • continue: 현재 반복을 건너뛰고 다음 반복을 시작한다.

2.5. 중첩 반복문

  • 중첩 반복문(Nested Loop)
    • 반복문 안에 또 다른 반복문이 있는 구조
    • 다차원 데이터 처리, 복잡한 패턴 출력, 모든 경우의 수(조합) 계산 등에 사용된다.

3. 요약

  • 반복 횟수가 명확할 때는 for이 유용하다.
  • 반복 조건이 중심일 때는 while이 유용하다.
  • 반복문 내부의 들여쓰기(Indentation)는 문법적으로 매우 중요하다.
  • breakcontinue를 적절히 사용하여 반복 흐름을 제어할 수 있어야 한다.

cf. 에라토스테네스의 체

  • 소수 찾기 알고리즘: 에라토스테네스의 체
    • 일단 1부터 100까지 숫자를 쭉 쓴다.
    • 일단 소수도, 합성수도 아닌 유일한 자연수 1을 제거하자.
    • 2를 제외한 2의 배수를 제거한다.
    • 3을 제외한 3의 배수를 제거한다.
    • 4의 배수는 지울 필요 없다. (2의 배수에서 이미 지워졌다.)
    • 그러면 2, 3 다음으로 남아있는 가장 작은 소수, 즉 5를 제외한 5의 배수를 제거해야 한다.
    • 그리고 마지막으로 7을 제외한 7의 배수까지 제거하면 결과는 이렇다.
    • 8의 배수는 지울 필요 없다. (2의 배수에서 이미 지워졌다.)
    • 9의 배수도 지울 필요 없다. (3의 배수에서 이미 지워졌다.)
    • 10의 배수도 지울 필요 없다. (2의 배수에서 이미 지워졌다.)
    • 그리고 11 이상 소수들의 배수부터는 이기 때문에 역시 지울 필요 없다.