반복문 (for, while) - 루프의 기초
요약
반복문의 기본 개념을 알아봅니다. for문과 while문의 구조, break와 continue 등 정보처리기사 실기에 출제되는 루프 개념을 정리합니다.
반복문 핵심 정리
| 종류 | 사용 시점 | 예시 |
|---|---|---|
| for | 반복 횟수가 정해진 경우 | for(i=0; i<5; i++) |
| while | 조건이 참인 동안 반복 | while(n > 0) |
| break | 루프 즉시 종료 | if(found) break; |
| continue | 다음 반복으로 건너뛰기 | if(skip) continue; |
| 종류 | 사용 시점 | 예시 |
|---|---|---|
| for | 반복 횟수가 정해진 경우 | for(i=0; i<5; i++) |
| while | 조건이 참인 동안 반복 | while(n > 0) |
| break | 루프 즉시 종료 | if(found) break; |
| continue | 다음 반복으로 건너뛰기 | if(skip) continue; |
| 종류 | 사용 시점 | 예시 |
|---|---|---|
| for | 리스트나 범위를 순회 | for i in range(5): |
| while | 조건이 참인 동안 반복 | while n > 0: |
| range | 정수 범위를 생성 | range(0, 5) |
| break | 루프 즉시 종료 | if found: break |
| continue | 다음 반복으로 건너뛰기 | if skip: continue |
for문
for문은 반복 횟수가 정해진 경우 사용합니다.
Python의 for문은 C/Java와 구조가 다릅니다. 리스트나 범위(range)를 순회하는 방식입니다.
가장 많이 쓰는 패턴은 range() 함수와 함께 사용하는 것입니다.
for문 실행 순서
| 단계 | i 값 | 조건 (i < 3) | 출력 |
|---|---|---|---|
| 1회 | 0 | 참 | 0 |
| 2회 | 1 | 참 | 1 |
| 3회 | 2 | 참 | 2 |
| 4회 | 3 | 거짓 | (종료) |
| 단계 | i 값 | 조건 (i < 3) | 출력 |
|---|---|---|---|
| 1회 | 0 | 참 | 0 |
| 2회 | 1 | 참 | 1 |
| 3회 | 2 | 참 | 2 |
| 4회 | 3 | 거짓 | (종료) |
| 단계 | i 값 | range(3)에 남은 값 | 출력 |
|---|---|---|---|
| 1회 | 0 | 1, 2 | 0 |
| 2회 | 1 | 2 | 1 |
| 3회 | 2 | 없음 | 2 |
| - | - | 순회 끝 | (종료) |

while문
while문은 조건이 참인 동안 계속 반복합니다.
while문 예시

for문 vs while문
while문 은 조건이 참인 동안 계속 반복합니다.
while문 예시
for문 vs while문
while문 은 조건이 참인 동안 계속 반복합니다.
while문 예시
for문 vs while문
| 구분 | for문 | while문 |
|---|---|---|
| 초기식 위치 | 괄호 안 | 루프 밖 |
| 증감식 위치 | 괄호 안 | 루프 안 |
| 사용 시점 | 횟수가 정해진 경우 | 조건 기반 반복 |
| 구분 | for문 | while문 |
|---|---|---|
| 초기식 위치 | 괄호 안 | 루프 밖 |
| 증감식 위치 | 괄호 안 | 루프 안 |
| 사용 시점 | 횟수가 정해진 경우 | 조건 기반 반복 |
| 구분 | for문 | while문 |
|---|---|---|
| 반복 기준 | 리스트, range 등을 순회 | 조건이 참인 동안 반복 |
| 증감식 | 자동 (다음 값으로 이동) | 직접 작성해야 함 |
| 사용 시점 | 순회할 대상이 있는 경우 | 조건 기반 반복 |
break - 루프 종료
break는 루프를 즉시 종료합니다.
배열에서 값 찾기
리스트에서 값 찾기
continue - 다음 반복으로
continue는 현재 반복을 건너뛰고 다음 반복으로 넘어갑니다.
| i | 동작 | 출력 |
|---|---|---|
| 0 | 출력 | 0 |
| 1 | 출력 | 1 |
| 2 | continue | (건너뜀) |
| 3 | 출력 | 3 |
| 4 | 출력 | 4 |
break vs continue
| 키워드 | 동작 | 결과 |
|---|---|---|
| break | 루프 완전 종료 | 루프 밖으로 탈출 |
| continue | 현재 반복만 건너뜀 | 다음 반복 계속 |
++i vs i++
둘 다 i를 1 증가시키지만, 값을 반환하는 시점이 다릅니다.
| 표현 | 이름 | 동작 |
|---|---|---|
++i | 전위 증가 | 먼저 증가, 그 다음 값 사용 |
i++ | 후위 증가 | 먼저 값 사용, 그 다음 증가 |
단독 사용 시 (차이 없음)
for문의 증감식에서는 결과가 같습니다.
값을 사용할 때 (차이 있음)
| 코드 | 실행 후 i/j | 실행 후 a/b |
|---|---|---|
a = ++i; (i=5) | 6 | 6 |
b = j++; (j=5) | 6 | 5 |
중첩 반복문
반복문 안에 반복문을 넣을 수 있습니다.
출력:
단계별 실행 과정
바깥 루프(i)가 1회 실행될 때마다 안쪽 루프(j)가 처음부터 끝까지 실행됩니다.
i = 0일 때:
| j 값 | 조건 (j < 3) | 출력 |
|---|---|---|
| 0 | 참 | (0,0) |
| 1 | 참 | (0,1) |
| 2 | 참 | (0,2) |
| 3 | 거짓 | 안쪽 루프 종료 → \n 출력 |
i = 1일 때:
| j 값 | 조건 (j < 3) | 출력 |
|---|---|---|
| 0 | 참 | (1,0) |
| 1 | 참 | (1,1) |
| 2 | 참 | (1,2) |
| 3 | 거짓 | 안쪽 루프 종료 → \n 출력 |
i = 2일 때: 조건 i < 2가 거짓 → 바깥 루프 종료

변수 스코프
C언어에서 블록(block) 이란 중괄호 {}로 감싼 코드 영역을 말합니다. 블록 안에서 선언한 변수는 그 블록이 끝나면 사라집니다. 이 변수가 유효한 범위를 스코프(scope) 라고 합니다.
for (int j = 0; ...) 처럼 for문 안에서 선언한 변수는 해당 for문 블록 안에서만 사용할 수 있습니다.
System.out.print vs System.out.println
Java에서 출력할 때 사용하는 두 메서드의 차이를 반드시 알아야 합니다.
| 메서드 | 줄바꿈 | 예시 출력 |
|---|---|---|
System.out.print() | 안 함 | AB (같은 줄) |
System.out.println() | 함 | A (줄바꿈) B |
for문으로 배열 순회하기
for문은 배열과 함께 사용하는 경우가 매우 많습니다.
a.length는 배열의 크기를 반환합니다. 위 예시에서는 3입니다. 배열에 대한 자세한 내용은 배열 페이지를 참고하세요.
range 함수
range() 함수는 정수 범위를 생성합니다. for문과 함께 가장 많이 사용됩니다.
| 표현 | 생성되는 값 | C/Java 대응 |
|---|---|---|
range(5) | 0, 1, 2, 3, 4 | for(i=0; i<5; i++) |
range(2, 6) | 2, 3, 4, 5 | for(i=2; i<6; i++) |
range(0, 10, 3) | 0, 3, 6, 9 | for(i=0; i<10; i+=3) |
print() 함수와 end 매개변수
Python의 print() 함수는 기본적으로 출력 후 줄바꿈을 합니다. end 매개변수로 줄바꿈 대신 다른 문자를 지정할 수 있습니다.
| 사용법 | 줄바꿈 | 예시 출력 |
|---|---|---|
print("A") | 함 | A (줄바꿈) B |
print("A", end="") | 안 함 | AB (같은 줄) |
print("A", end=" ") | 안 함 (공백) | A B (공백 구분) |
for문으로 리스트 순회하기
for문은 리스트와 함께 사용하는 경우가 매우 많습니다.
값을 직접 순회
인덱스로 순회
인덱스를 사용하면 리스트의 위치 번호로 각 요소에 접근할 수 있습니다.
len(a)는 리스트의 길이를 반환합니다. 위 예시에서는 3입니다.
인덱스와 값을 동시에 순회
enumerate()는 인덱스와 값을 동시에 반환하는 함수입니다. 자세한 내용은 enumerate 함수 페이지를 참고하세요.
중첩 반복문
반복문 안에 반복문을 넣을 수 있습니다. 시험에서 자주 출제되는 패턴입니다.
출력:
단계별 실행 과정
바깥 루프(i)가 1회 실행될 때마다 안쪽 루프(j)가 처음부터 끝까지 실행됩니다.
i = 0일 때:
| j 값 | range(3) 남은 값 | 출력 |
|---|---|---|
| 0 | 1, 2 | (0,0) |
| 1 | 2 | (0,1) |
| 2 | 없음 | (0,2) |
| - | 순회 끝 | 안쪽 루프 종료 → 줄바꿈 |
i = 1일 때:
| j 값 | range(3) 남은 값 | 출력 |
|---|---|---|
| 0 | 1, 2 | (1,0) |
| 1 | 2 | (1,1) |
| 2 | 없음 | (1,2) |
| - | 순회 끝 | 안쪽 루프 종료 → 줄바꿈 |
i = 2: range(2)의 순회가 끝남 → 바깥 루프 종료
2차원 리스트와 중첩 반복문
2차원 리스트를 순회할 때 중첩 반복문을 사용합니다. 이 패턴은 정보처리기사 실기에 출제된 바 있습니다.
바깥 for문은 lol의 각 하위 리스트를 순회하고, 안쪽 for문은 하위 리스트의 각 요소를 순회합니다. end=""로 같은 줄에 출력하고, 내부 반복이 끝나면 print()로 줄바꿈합니다.