범위 연산자 (`..`, `rangeTo`, `step`) - swkim0128/PARA GitHub Wiki

코틀린의 **범위 연산자(Range Operator)**는 숫자, 문자 등의 값이 특정 범위에 포함되는지 확인하거나 반복문에서 사용할 수 있도록 범위를 생성하는 기능을 제공합니다.

1. .. 연산자 (닫힌 범위 - Inclusive Range)

  • a..b: a에서 b까지 포함하는 범위를 생성합니다.

예제

fun main() {
    val range = 1..5
    println(range.toList()) // 출력: [1, 2, 3, 4, 5]
}
  • 1..5는 [1, 2, 3, 4, 5]를 포함하는 범위를 생성합니다.

2. rangeTo 함수 (닫힌 범위 - Inclusive Range)

  • a.rangeTo(b)는 a..b와 동일한 동작을 합니다.
  • 가독성을 위해 .. 연산자가 더 많이 사용됨.

예제

fun main() {
    val range = 1.rangeTo(5)
    println(range.toList()) // 출력: [1, 2, 3, 4, 5]
}

3. downTo 함수 (역순 범위 - Inclusive Range)

  • 내림차순으로 범위를 생성할 때 사용합니다.

예제

fun main() {
    val range = 5 downTo 1
    println(range.toList()) // 출력: [5, 4, 3, 2, 1]
}

4. step 함수 (간격 지정)

  • **step(n)**을 사용하여 범위의 간격을 조절할 수 있습니다.

예제

fun main() {
    val range = 1..10 step 2
    println(range.toList()) // 출력: [1, 3, 5, 7, 9]
}
  • 1..10 step 2 → [1, 3, 5, 7, 9] (2씩 증가)

(1) downTo와 step 조합

fun main() {
    val range = 10 downTo 1 step 3
    println(range.toList()) // 출력: [10, 7, 4, 1]
}
  • 10 downTo 1 step 3 → [10, 7, 4, 1] (3씩 감소)

5. 범위와 in 연산자

  • 값이 특정 범위에 속하는지 확인할 때 사용합니다.

예제

fun main() {
    val number = 5

    if (number in 1..10) {
        println("$number는 1부터 10 사이에 포함됩니다.") // 출력됨
    }

    if (number !in 10..20) {
        println("$number는 10부터 20 사이에 포함되지 않습니다.") // 출력됨
    }
}

6. 범위를 이용한 for 루프

범위는 반복문에서 자주 사용됩니다.

(1) ..을 사용한 반복문

fun main() {
    for (i in 1..5) {
        println(i) // 출력: 1, 2, 3, 4, 5
    }
}

(2) downTo와 step을 사용한 반복문

fun main() {
    for (i in 10 downTo 1 step 2) {
        println(i) // 출력: 10, 8, 6, 4, 2
    }
}

7. 문자(Char) 범위

  • 문자 범위도 숫자와 동일한 방식으로 사용할 수 있습니다.

예제

fun main() {
    val charRange = 'a'..'e'
    println(charRange.toList()) // 출력: [a, b, c, d, e]

    if ('c' in charRange) {
        println("'c'는 범위 내에 있습니다.") // 출력됨
    }
}

8. until 함수 (반열린 범위 - Exclusive Range)

  • until은 마지막 값을 포함하지 않음 (..과 다름).

예제

fun main() {
    for (i in 1 until 5) {
        println(i) // 출력: 1, 2, 3, 4 (5는 포함되지 않음)
    }
}

9. reversed()를 사용한 범위 반전

  • reversed()를 사용하면 범위를 역순으로 만들 수 있습니다.

예제

fun main() {
    val range = (1..5).reversed()
    println(range.toList()) // 출력: [5, 4, 3, 2, 1]
}

10. 범위 연산자 비교 요약

연산자/함수 설명 예제 결과
.. 시작부터 끝까지 포함하는 범위 1..5 [1, 2, 3, 4, 5]
rangeTo() ..과 동일 1.rangeTo(5) [1, 2, 3, 4, 5]
downTo 내림차순 범위 5 downTo 1 [5, 4, 3, 2, 1]
step(n) 간격 조절 1..10 step 2 [1, 3, 5, 7, 9]
until 끝 값을 포함하지 않는 범위 1 until 5 [1, 2, 3, 4]
reversed() 범위를 뒤집음 (1..5).reversed() [5, 4, 3, 2, 1]

📌 결론

✅ .. 연산자로 간단하게 범위를 생성할 수 있음. ✅ downTo, step, until을 활용하면 다양한 방식으로 범위를 조절할 수 있음. ✅ in 연산자를 사용하면 값이 특정 범위에 포함되는지 쉽게 확인 가능. ✅ for 루프에서 range를 사용하면 반복문이 더욱 간결해짐.

💡 범위 연산자를 활용하면 반복문과 조건문을 더욱 깔끔하게 작성할 수 있습니다! 🚀

⚠️ **GitHub.com Fallback** ⚠️