Menu
Coddy logo textTech

프로그래밍에서 반복이란 무엇인가요?

프로그래밍에서 반복(이터레이션)은 조건이 충족되거나 컬렉션의 모든 항목을 처리할 때까지, 보통 반복문으로 명령 묶음을 되풀이하는 것입니다. 되풀이되는 명령을 한 번 지나가는 것도 이터레이션이라고 불러요.

글쓴이: Kevin Spektor, 공동 창업자, CTO

업데이트: 2026년 9월 24일

사용자 10,000명에게 알림 이메일을 보내는 프로그램에 발송 코드가 10,000번 복사되어 있지는 않아요. 코드는 반복문 안에 한 번만 있고, 반복문이 사용자마다 한 번씩 그 코드를 실행해요. 한 번 실행하는 것이 이터레이션 하나이고, 반복문 전체가 프로그램이 사용자들을 차례로 도는 방식이에요.

반복은 단계별로 이렇게 동작해요

모든 반복문은 같은 순환을 따라요.

  1. 확인. 반복문의 조건을 검사해요. 조건은 불리언이에요. 다음 항목이 있는지, 카운터가 아직 한도보다 작은지를 묻죠.
  2. 실행. 답이 참이면 반복문 본문을 한 번 실행해요.
  3. 갱신. 다음 항목으로 넘어가거나 카운터를 바꿔요.
  4. 되풀이. 1단계로 돌아가요. 확인 결과가 거짓이면 프로그램은 반복문 다음 코드로 넘어가요.

여기서는 본문이 다섯 번 실행되고, 이터레이션마다 다음 숫자를 누적 합계에 더해요.

iteration 1 total is now 1
iteration 2 total is now 3
iteration 3 total is now 6
iteration 4 total is now 10
iteration 5 total is now 15
Done: 15

변수 total은 반복문 바깥에 있어서, 한 이터레이션에서 다음 이터레이션으로 값이 이어져요. 반복문 전에 정하고 안에서 갱신하는 이런 변수를 누산기(accumulator)라고 하며, 무언가를 계산하는 반복문에는 거의 항상 등장해요.

횟수를 세는 반복과 조건으로 도는 반복

반복에는 두 종류가 있어요. 확정 반복은 정해진 횟수만큼 돌아요. 리스트의 항목마다 한 번, 또는 1부터 5까지 숫자마다 한 번씩이요. 파이썬의 for 반복문이 이런 용도로 만들어졌고, range()와 함께 쓰는 경우가 많아요.

비확정 반복은 무언가가 일어날 때까지 되풀이하고, 몇 번 돌지 미리 알 수 없어요. 이 경우에는 while 반복문이 맞아요.

8 years, balance 214.36

매년 10%씩 불어나는 돈은 두 배가 되기까지 8년이 걸려요. 프로그램은 방정식을 풀어서가 아니라 반복해서 그 답을 찾았어요. 파이썬에서의 두 반복문은 for 반복문과 while 반복문 가이드에서 다뤄요.

컬렉션 순회하기

대부분의 반복문은 컬렉션을 훑어요. 배열의 요소, 문자열의 글자, 파일의 줄 같은 것들이죠. 파이썬의 for 반복문은 각 요소를 바로 건네주고, enumerate()는 위치를 덧붙여 줘요.

0 apple
1 banana
2 cherry

내부적으로 for는 iter()로 컬렉션에 이터레이터를 요청하고, 이터레이션마다 그 이터레이터에 next()를 한 번씩 호출해요. 같은 호출을 직접 해 볼 수도 있어요.

red
green
blue
no more items

기본값이 없으면 네 번째 next()는 StopIteration을 일으켜요. for 반복문은 이 예외를 신호로 삼아 컬렉션이 끝났다는 것을 알아요.

다른 언어는 같은 개념을 다르게 표기해요. C는 인덱스로 세고, 자바와 자바스크립트에는 각 요소를 건네주는 반복문도 있어요.

for (int i = 0; i < 3; i++) {
    printf("%s\n", colors[i]);
}
for (String color : colors) {
    System.out.println(color);
}
for (const color of colors) {
    console.log(color);
}

반복과 재귀의 차이

재귀는 일을 되풀이하는 또 다른 방법이에요. 함수가 더 작은 버전의 문제로 자기 자신을 호출하고, 바로 답할 수 있는 경우에 닿을 때까지 계속해요. 한쪽으로 쓴 것은 다른 쪽으로도 쓸 수 있지만, 동작 방식은 달라요.

반복재귀
되풀이하는 방법반복문이 시작점으로 돌아감함수가 자기 자신을 호출함
멈추는 때반복문 조건이 거짓이 될 때기저 사례에 닿을 때
메모리몇 번을 돌든 같은 양아직 끝나지 않은 호출마다 스택 프레임 하나
전형적인 실패무한 루프스택 오버플로(파이썬에서는 RecursionError)
잘 맞는 곳리스트, 카운터, 조건이 될 때까지 되풀이트리, 중첩된 데이터, 분할 정복

메모리 행은 실제로 중요해요. 파이썬은 기본적으로 중첩 호출을 1,000번 정도까지 허용하므로, 숫자 5,000개를 재귀로 더하면 실패하지만 반복문은 문제없어요.

5050 5050
12502500
sum_recursive(5000) failed: RecursionError

재귀 시각화에서 호출 스택이 단계별로 쌓이고 줄어드는 모습을 볼 수 있어요.

흔한 실수

무한 루프. 조건이 절대 거짓이 되지 않는 while 반복문은 프로그램을 멈출 때까지 돌아요. 흔한 원인은 count = count - 1을 빠뜨리는 것처럼 갱신 단계를 잊는 거예요.

하나 차이 오류. range(1, 5)는 끝 값을 빼기 때문에 5가 아니라 1, 2, 3, 4를 만들어요. 한 번 더 돌거나 한 번 덜 도는 반복문도 오류 없이 실행되면서 틀린 답을 내요. 이것이 논리 오류예요.

순회하는 도중에 리스트 바꾸기. 순회 중인 리스트에서 항목을 지우면 반복문이 요소를 건너뛰어요.

[1, 2, 3]

2 하나가 살아남았어요. 첫 번째 2를 지우자 두 번째 2가 반복문이 이미 지나간 위치로 밀려났기 때문이에요. 대신 새 리스트를 만드세요. numbers = [n for n in numbers if n != 2]처럼요.

다음으로 읽을 내용

반복문은 컬렉션을 훑으므로 배열이란 무엇인지가 짝을 이루는 페이지이고, 불리언이란 무엇인지는 반복문이 언제 멈출지 정하는 참/거짓 확인을 설명해요. 반복문이 오류 메시지 없이 틀린 결과를 낸다면 논리 오류란 무엇인지를 읽어 보세요. 반복문 작성을 연습하려면 파이썬 강의를 시작하거나 위 예제들을 파이썬 플레이그라운드에서 실행해 보세요.

자주 묻는 질문

반복의 예로는 어떤 것이 있나요?
사용자 100명의 목록에서 이름을 하나씩 모두 출력하는 for 반복문은 이름마다 한 번씩, 100번 반복해요. 올바른 비밀번호가 입력될 때까지 계속 묻는 while 반복문도 반복이에요. 몇 번 돌지 미리 알 수 없더라도요.
재귀와 반복 중 어느 쪽이 더 좋은가요?
일반적으로 어느 한쪽이 더 낫지는 않아요. 반복은 정해진 양의 메모리만 쓰고, 리스트 합계나 개수 세기 같은 단순한 되풀이에서는 보통 더 빨라요. 재귀는 폴더 트리를 훑는 일처럼 본질적으로 재귀적인 문제에서 코드를 더 짧고 명확하게 해 줘요. 하지만 호출마다 스택 메모리를 쓰고, 파이썬 같은 언어에서는 아주 깊은 재귀가 실패해요.
반복과 반복문은 같은 말인가요?
거의 같아요. 반복문은 for나 while 같은 언어의 구문이고, 반복은 그 구문이 수행하는 되풀이예요. 반복문 본문을 한 번 지나가는 것도 이터레이션이라고 부르므로, 5번 도는 반복문은 이터레이션 5번을 수행해요.
스프린트와 이터레이션은 무엇이 다른가요?
소프트웨어 프로젝트 관리에서 이터레이션은 팀이 동작하는 소프트웨어의 한 부분을 계획하고, 만들고, 검토하는 고정 기간으로, 보통 1주에서 4주예요. 스크럼에서는 그 기간을 스프린트라고 부르므로 실제로는 두 말이 같은 뜻이에요. 코드에서 말하는 반복과는 다른 의미예요.
이터러블(iterable)은 무슨 뜻인가요?
이터러블은 리스트, 문자열, 딕셔너리, 파일, range처럼 for로 순회할 수 있는 객체예요. 파이썬에서는 iter()가 이터레이터를 만들어 낼 수 있는 객체가 이터러블이에요. 정수는 이터러블이 아니라서 for x in 5:는 TypeError를 일으켜요.
Coddy programming languages illustration

Coddy로 코딩 배우기

시작하기