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)는 문법적으로 매우 중요하다.
break와continue를 적절히 사용하여 반복 흐름을 제어할 수 있어야 한다.
cf. 에라토스테네스의 체
- 소수 찾기 알고리즘: 에라토스테네스의 체
- 일단 1부터 100까지 숫자를 쭉 쓴다.
- 일단 소수도, 합성수도 아닌 유일한 자연수 1을 제거하자.
- 2를 제외한 2의 배수를 제거한다.
- 3을 제외한 3의 배수를 제거한다.
- 4의 배수는 지울 필요 없다. (2의 배수에서 이미 지워졌다.)
- 그러면 2, 3 다음으로 남아있는 가장 작은 소수, 즉 5를 제외한 5의 배수를 제거해야 한다.
- 그리고 마지막으로 7을 제외한 7의 배수까지 제거하면 결과는 이렇다.
- 8의 배수는 지울 필요 없다. (2의 배수에서 이미 지워졌다.)
- 9의 배수도 지울 필요 없다. (3의 배수에서 이미 지워졌다.)
- 10의 배수도 지울 필요 없다. (2의 배수에서 이미 지워졌다.)
- 그리고 11 이상 소수들의 배수부터는 이기 때문에 역시 지울 필요 없다.