🔁 반복문
📖 반복문이란?
**반복문(Loop)**은 같은 코드를 여러 번 실행합니다. 목록을 순회하거나 특정 횟수만큼 작업을 반복할 때 사용합니다.
💡 for 문
범위로 반복
fun main() {
// 1부터 5까지
for (i in 1..5) {
println(i)
}
// 출력: 1 2 3 4 5
}
until (끝 제외)
fun main() {
// 1부터 4까지 (5는 제외)
for (i in 1 until 5) {
println(i)
}
// 출력: 1 2 3 4
}
step (간격)
fun main() {
// 2씩 증가
for (i in 1..10 step 2) {
println(i)
}
// 출력: 1 3 5 7 9
// 10씩 증가
for (i in 0..100 step 10) {
print("$i ")
}
// 출력: 0 10 20 30 40 50 60 70 80 90 100
}
역순
fun main() {
// 5부터 1까지 감소
for (i in 5 downTo 1) {
println(i)
}
// 출력: 5 4 3 2 1
// 10부터 0까지 2씩 감소
for (i in 10 downTo 0 step 2) {
print("$i ")
}
// 출력: 10 8 6 4 2 0
}
📋 리스트로 반복
기본 순회
fun main() {
val fruits = listOf("사과", "바나나", "포도")
for (fruit in fruits) {
println(fruit)
}
// 출력:
// 사과
// 바나나
// 포도
}
인덱스와 함께
fun main() {
val fruits = listOf("사과", "바나나", "포도")
for ((index, fruit) in fruits.withIndex()) {
println("${index + 1}. $fruit")
}
// 출력:
// 1. 사과
// 2. 바나나
// 3. 포도
}
🔄 while 문
while
fun main() {
var count = 1
while (count <= 5) {
println(count)
count++
}
// 출력: 1 2 3 4 5
}
do-while
조건을 나중에 검사 (최소 1번 실행)
fun main() {
var count = 1
do {
println(count)
count++
} while (count <= 5)
// 출력: 1 2 3 4 5
}
🎯 break와 continue
break (중단)
fun main() {
for (i in 1..10) {
if (i == 6) {
break // 반복 중단
}
println(i)
}
// 출력: 1 2 3 4 5
}
continue (건너뛰기)
fun main() {
for (i in 1..10) {
if (i % 2 == 0) {
continue // 짝수는 건너뛰기
}
println(i)
}
// 출력: 1 3 5 7 9
}
🎯 실전 예제
구구단
fun main() {
val dan = 3
println("=== ${dan}단 ===")
for (i in 1..9) {
println("$dan × $i = ${dan * i}")
}
}
별 찍기
fun main() {
// 삼각형
for (i in 1..5) {
println("*".repeat(i))
}
// 출력:
// *
// **
// ***
// ****
// *****
println()
// 역삼각형
for (i in 5 downTo 1) {
println("*".repeat(i))
}
}
합계 계산
fun main() {
var sum = 0
for (i in 1..100) {
sum += i
}
println("1부터 100까지의 합: $sum")
// 출력: 1부터 100까지의 합: 5050
}
소수 판별
fun main() {
val number = 17
var isPrime = true
if (number < 2) {
isPrime = false
} else {
for (i in 2 until number) {
if (number % i == 0) {
isPrime = false
break
}
}
}
if (isPrime) {
println("$number는 소수입니다")
} else {
println("$number는 소수가 아닙니다")
}
}
최댓값 찾기
fun main() {
val numbers = listOf(15, 42, 8, 23, 56, 4)
var max = numbers[0]
for (num in numbers) {
if (num > max) {
max = num
}
}
println("최댓값: $max") // 최댓값: 56
}
숫자 맞추기 게임
fun main() {
val answer = 42
var attempts = 0
while (true) {
attempts++
println("숫자를 입력하세요:")
val guess = readln().toInt()
when {
guess < answer -> println("UP!")
guess > answer -> println("DOWN!")
else -> {
println("정답! ($attempts번 시도)")
break
}
}
}
}
🆚 for vs while
언제 뭘 쓸까?
// ✅ 반복 횟수를 아는 경우 → for
fun main() {
for (i in 1..10) {
println(i)
}
}
// ✅ 조건에 따라 반복 → while
fun main() {
var input = ""
while (input != "quit") {
println("명령을 입력하세요:")
input = readln()
}
}
🤔 자주 묻는 질문
Q1. .. vs until의 차이는?
A: 끝을 포함하는지 여부입니다!
fun main() {
// 1..5 → 1, 2, 3, 4, 5 (끝 포함)
for (i in 1..5) {
print("$i ")
}
println()
// 1 until 5 → 1, 2, 3, 4 (끝 제외)
for (i in 1 until 5) {
print("$i ")
}
}
Q2. 무한 루프는?
A: while (true) 사용!
fun main() {
var count = 0
while (true) {
count++
println(count)
if (count >= 5) {
break // 탈출 조건 필수!
}
}
}
Q3. repeat는 뭔가요?
A: 간단한 반복에 사용!
fun main() {
// 5번 반복
repeat(5) {
println("Hello")
}
// 인덱스도 사용 가능
repeat(5) { index ->
println("${index + 1}번째")
}
}
🎬 마치며
반복문 으로 효율적인 코드를 작성하세요!
핵심 정리:
✅ for - 범위, 리스트 순회
✅ while - 조건 기반 반복
✅ break - 반복 중단
✅ continue - 현재 회차 건너뛰기
✅ repeat - 간단한 반복
다음 단계: 함수 기초에서 함수를 만들어보세요!