for, while, range, 그리고 누적합과 2중 반복문
for, while, range(), break, continue, 2중 반복문
for문과 range()로 정해진 횟수만큼 반복하기while문의 조건식 설계와 무한 루프 방지하기break와 continue로 흐름 제어하기파이썬의 대표적인 수열 생성기
range(5) # 0, 1, 2, 3, 4 (끝값 5 미포함)
range(2, 6) # 2, 3, 4, 5
range(1, 10, 2) # 1, 3, 5, 7, 9 (2씩 증가)
range(5, 0, -1) # 5, 4, 3, 2, 1 (역순 카운트다운)
⚠️ 주의: 끝값은 항상 포함되지 않습니다!
조건이 참인 동안 계속 실행되는 루프
battery = 100
while battery > 0:
print(f"배터리: {battery}%")
battery -= 30 # 탈출을 위해 변수를 반드시 변경!
루프 안에서 조건 변수가 갱신되지 않으면 무한 루프(TLE)에 빠집니다.
| 명령어 | 동작 방식 |
|---|---|
break |
루프를 즉시 완전히 빠져나옴 (강제 종료) |
continue |
남은 코드를 건너뛰고 바로 다음 턴으로 이동 |
# 1. 누적합: total을 루프 밖에서 0으로 초기화
total = 0
for i in range(1, n + 1): total += i
# 2. 카운팅: count를 루프 밖에서 0으로 초기화
count = 0
for x in data:
if x % 2 == 0: count += 1
# 3. 최댓값 탐색: 첫 데이터를 기준점으로 잡기
max_val = first_num
for x in data[1:]:
if x > max_val: max_val = x 바깥 루프 1회당 안쪽 루프가 전체를 순회합니다.
# 구구단: 바깥 8회 x 안쪽 9회 = 총 72회 수행
for dan in range(2, 10):
for step in range(1, 10):
print(f"{dan} x {step} = {dan * step:2d}", end=" ")
print()
💡 총 실행 횟수 = (바깥쪽 횟수 × 안쪽 횟수)
모든 경우의 수를 빠짐없이 확인하는 브루트포스 기본형
# 두 주사위의 합이 7이 되는 모든 순서쌍
for i in range(1, 7): # 첫 번째 주사위
for j in range(1, 7): # 두 번째 주사위
if i + j == 7:
print(f"({i}, {j})")
⚠️ 주의: 바깥 루프와 안쪽 루프의 변수명은 반드시 서로 다르게 써야 합니다!
range(1, 10)은 9까지만 돕니다.| 항목 | 수칙 |
|---|---|
for vs while |
정해진 횟수 순회는 for, 조건 기반은 while |
| 변수 초기화 | 누적합/카운팅 변수는 반드시 루프 바깥에 선언 |
| 2중 루프 변수 | 바깥쪽과 안쪽 루프 변수명을 서로 다르게 지정 |