연습 문제: Kotlin 기본사항

1. 시작하기 전에

지금까지 Kotlin 프로그래밍 기본사항에 관해 열심히 알아봤으므로 이제 배운 내용을 실제로 적용해 보겠습니다.

이 연습에서는 학습한 개념에 관한 이해도를 테스트합니다. 실제 사용 사례를 중심으로 하며 일부는 이전에 본 적이 있을 수도 있습니다.

안내에 따라 각 문제의 솔루션을 찾습니다. 문제가 어려운 경우 일부 연습 문제에는 도움이 되는 힌트가 있습니다. 솔루션 코드는 마지막에 제공되지만 연습 문제를 해결한 후 답을 확인하는 것이 좋습니다.

솔루션을 문제 해결의 한 가지 방법으로 생각하고 자유롭게 여러 가지 방법을 실험해 보세요. 여러 가지 방법으로 연습 문제를 해결할 수 있으며 함수와 변수에 다양한 이름을 사용할 수 있습니다.

나에게 맞는 속도로 문제를 해결합니다. 표시된 시간이 있지만 추정치일 뿐이므로 이 시간을 준수할 필요는 없습니다. 충분한 시간을 갖고 각 문제를 신중하게 해결하세요.

이러한 문제를 해결하려면 Kotlin 플레이그라운드를 사용하는 것이 좋습니다.

기본 요건

필요한 항목

  • 인터넷 액세스가 가능하고 웹브라우저가 있는 컴퓨터

2. 메시지 출력

이 개발자 과정에서 배운 내용을 친구에게 알려주세요.

  • 다음 메시지를 별도의 네 줄에 출력하는 main() 함수를 작성할 수 있나요?
Use the val keyword when the value doesn't change.
Use the var keyword when the value can change.
When you define a function, you define the parameters that can be passed to it.
When you call a function, you pass arguments for the parameters.

3. 컴파일 오류 수정

이 프로그램에서는 사용자에게 친구로부터 채팅 메시지를 받았음을 알리는 메시지를 출력합니다.

fun main() {
    println("New chat message from a friend'}
}
  1. 이 프로그램에서 발생한 컴파일 오류의 근본 원인을 파악하고 해결할 수 있나요?
  2. 코드에서 적절한 기호를 사용하여 문자열 및 함수 인수의 열기 및 닫기를 표시하나요?

힌트: Kotlin 플레이그라운드를 사용하여 코드를 실행하고 컴파일 오류를 확인할 수 있습니다.

오류를 수정한 후 프로그램은 오류 없이 컴파일되고 다음 결과를 출력합니다.

New chat message from a friend

4. 문자열 템플릿

이 프로그램은 사용자에게 특정 상품의 예정된 프로모션 할인에 관해 알립니다. 문자열 템플릿이 있고 이 템플릿은 할인율에 discountPercentage 변수를, 할인 상품에 item 변수를 사용합니다. 그러나 코드에 컴파일 오류가 있습니다.

fun main() {
    val discountPercentage: Int = 0
    val offer: String = ""
    val item = "Google Chromecast"
    discountPercentage = 20
    offer = "Sale - Up to $discountPercentage% discount on $item! Hurry up!"

    println(offer)
}
  1. 오류의 근본 원인을 파악하여 해결할 수 있나요?
  2. Kotlin 플레이그라운드에서 코드를 실행하기 전에 이 프로그램의 출력을 파악할 수 있나요?

힌트: 읽기 전용 변수에 값을 재할당할 수 있나요?

오류를 수정한 후 프로그램은 오류 없이 컴파일되고 다음 결과를 출력합니다.

Sale - Up to 20% discount on Google Chromecast! Hurry up!

5. 문자열 연결

이 프로그램은 파티의 총참석자 수를 표시합니다. 파티에는 성인도 어린이도 있습니다. numberOfAdults 변수에는 파티에 참석한 성인 수, numberOfKids 변수에는 어린이 수가 저장됩니다.

fun main() {
    val numberOfAdults = "20"
    val numberOfKids = "30"
    val total = numberOfAdults + numberOfKids
    println("The total party size is: $total")
}

1단계

  • Kotlin 플레이그라운드에서 코드를 실행하기 전에 이 프로그램의 출력을 파악할 수 있나요?

출력을 파악한 후 Kotlin 플레이그라운드에서 코드를 실행하고 파악된 출력이 표시된 출력과 일치하는지 확인합니다.

힌트: 두 문자열에서 + 연산자를 사용하면 어떻게 되나요?

2단계

코드가 작동하여 내용이 출력되지만 파티에 참석한 총인원 수는 표시되지 않습니다.

  • 코드에서 문제를 찾고 해결하여 다음과 같이 출력되도록 할 수 있나요?
The total party size is: 50

6. 메시지 서식

이 프로그램은 직원이 이번 달 받은 총급여를 표시합니다. 총급여는 다음 두 부분으로 나뉩니다. 매달 직원이 받는 baseSalary 변수와 직원에게 지급되는 추가 보너스인 bonusAmount 변수입니다.

fun main() {
    val baseSalary = 5000
    val bonusAmount = 1000
    val totalSalary = "$baseSalary + $bonusAmount"
    println("Congratulations for your bonus! You will receive a total of $totalSalary (additional bonus).")
}
  1. Kotlin 플레이그라운드에서 실행하기 전에 이 코드의 출력 내용을 파악할 수 있나요?
  2. Kotlin 플레이그라운드에서 코드를 실행할 때 예상대로 출력되나요?

7. 기본적인 수학 연산 구현

이 연습에서는 기본적인 수학 연산을 실행하고 결과를 출력하는 프로그램을 작성합니다.

1단계

main() 함수에는 컴파일 오류가 하나 있습니다.

fun main() {
    val firstNumber = 10
    val secondNumber = 5

    println("$firstNumber + $secondNumber = $result")
}
  • 오류를 수정하여 프로그램에서 다음과 같이 출력되도록 할 수 있나요?
10 + 5 = 15

2단계

코드는 작동하지만 두 숫자를 더하는 로직이 결과 변수 내에 있어 코드를 재사용하기에는 유연성이 부족합니다. 대신 더하기 연산을 add() 함수로 추출하면 코드를 재사용할 수 있습니다. 아래에 나열된 코드로 코드를 업데이트하면 됩니다. 이제 코드에서 thirdNumber라는 새 val을 도입하고 이 새 변수의 결과를 firstNumber로 출력합니다.

fun main() {
    val firstNumber = 10
    val secondNumber = 5
    val thirdNumber = 8

    val result = add(firstNumber, secondNumber)
    val anotherResult = add(firstNumber, thirdNumber)

    println("$firstNumber + $secondNumber = $result")
    println("$firstNumber + $thirdNumber = $anotherResult")
}

// Define add() function below this line
  • add() 함수를 정의하여 프로그램에서 다음과 같이 출력되도록 할 수 있나요?
10 + 5 = 15
10 + 8 = 18

3단계

이제 두 숫자를 더하는 재사용 가능한 함수가 있습니다.

  • add() 함수를 구현한 같은 방식으로 subtract() 함수를 구현할 수 있나요? subtract() 함수를 사용하도록 main() 함수를 수정하여 예상대로 작동하는지 확인합니다.

힌트: 더하기와 빼기, 기타 수학 연산 간의 차이를 생각해 보세요. 거기서부터 솔루션 코드 작업을 시작하세요.

8. 기본 매개변수

Gmail에는 새 기기에서 로그인 시도가 있을 때마다 사용자에게 알림을 보내는 기능이 있습니다.

이 연습에서는 다음 메시지 템플릿을 사용하여 사용자에게 메시지를 표시하는 프로그램을 작성합니다.

There's a new sign-in request on operatingSystem for your Google Account emailId.

operatingSystem 매개변수와 emailId 매개변수를 허용하고 지정된 형식으로 메시지를 생성하여 메시지를 반환하는 함수를 구현해야 합니다.

예를 들어 operatingSystem에 'Chrome OS', emailId에 'sample@gmail.com'을 사용하여 함수를 호출하면 다음 문자열이 반환됩니다.

There's a new sign-in request on Chrome OS for your Google Account sample@gmail.com.

1단계

  1. 표시된 결과가 출력되도록 이 프로그램에서 displayAlertMessage() 함수를 구현할 수 있나요?
fun main() {
    val operatingSystem = "Chrome OS"
    val emailId = "sample@gmail.com"

    println(displayAlertMessage(operatingSystem, emailId))
}

// Define your displayAlertMessage() below this line.
  1. 프로그램이 다음과 같이 출력되나요?
There's a new sign-in request on Chrome OS for your Google Account sample@gmail.com.

2단계

잘하셨습니다. 메시지가 표시되었습니다. 하지만 사용자의 운영체제를 확인할 수 없는 경우도 있습니다. 이때는 운영체제 이름을 Unknown OS로 지정해야 합니다. 함수가 호출될 때마다 Unknown OS 인수를 전달하지 않아도 되도록 코드를 추가로 최적화할 수 있습니다.

  1. 다음과 같이 출력되도록 이 정보로 코드를 최적화하는 방법을 찾을 수 있나요?
There's a new sign-in request on Unknown OS for your Google Account user_one@gmail.com.

There's a new sign-in request on Windows for your Google Account user_two@gmail.com.

There's a new sign-in request on Mac OS for your Google Account user_three@gmail.com.
  1. 위의 메시지를 출력하려면 main() 함수 구현을 다음으로 바꿉니다.
fun main() {
    val firstUserEmailId = "user_one@gmail.com"

    // The following line of code assumes that you named your parameter as emailId.
    // If you named it differently, feel free to update the name.
    println(displayAlertMessage(emailId = firstUserEmailId))
    println()

    val secondUserOperatingSystem = "Windows"
    val secondUserEmailId = "user_two@gmail.com"

    println(displayAlertMessage(secondUserOperatingSystem, secondUserEmailId))
    println()

    val thirdUserOperatingSystem = "Mac OS"
    val thirdUserEmailId = "user_three@gmail.com"

    println(displayAlertMessage(thirdUserOperatingSystem, thirdUserEmailId))
    println()
}

9. 만보계

만보계는 걸음 수를 계산하는 전자 기기입니다. 요즘에는 거의 모든 휴대전화와 스마트시계, 운동 장비에 만보계가 내장되어 있습니다. 건강 및 피트니스 앱은 내장된 만보계를 사용하여 걸음 수를 계산합니다. 이 함수는 사용자의 걸음 수에 따라 소모한 칼로리를 계산합니다.

  • 권장사항에 따라 이 프로그램의 함수와 함수 매개변수, 변수의 이름을 바꿀 수 있나요?
fun main() {
    val Steps = 4000
    val caloriesBurned = PEDOMETERstepsTOcalories(Steps);
    println("Walking $Steps steps burns $caloriesBurned calories")
}

fun PEDOMETERstepsTOcalories(NumberOFStepS: Int): Double {
    val CaloriesBURNEDforEachStep = 0.04
    val TotalCALORIESburned = NumberOFStepS * CaloriesBURNEDforEachStep
    return TotalCALORIESburned
}

10. 두 숫자 비교

최신 휴대전화에는 기기 사용 시간 또는 일일 휴대전화 사용 시간을 추적하는 기능이 내장되어 있습니다.

이 연습에서는 오늘 휴대전화를 사용한 시간과 어제 사용한 시간을 분 단위로 비교하는 함수를 구현합니다. 이 함수는 두 정수 매개변수를 허용하고 불리언 값을 반환합니다.

첫 번째 매개변수에는 오늘 사용한 시간(분)이 저장되고 두 번째 매개변수에는 어제 사용한 시간(분)이 저장됩니다. 어제보다 오늘 휴대전화에 더 많은 시간을 사용했다면 이 함수는 true 값을 반환합니다. 그렇지 않으면 false 값을 반환합니다.

다음과 같은 이름이 지정된 인수를 사용하여 함수를 호출한 경우를 예로 들 수 있습니다.

  • timeSpentToday = 300, timeSpentYesterday = 250이면 함수는 true 값을 반환합니다.
  • timeSpentToday = 300, timeSpentYesterday = 300이면 함수는 false 값을 반환합니다.
  • timeSpentToday = 200, timeSpentYesterday = 220이면 함수는 false 값을 반환합니다.

힌트: > 비교 연산자는 연산자 앞에 있는 값이 뒤에 있는 값보다 크면 true 값을 반환합니다. 그렇지 않으면 false 값을 반환합니다.

11. 함수로 중복 코드 이동

이 프로그램은 다양한 도시의 날씨를 표시합니다. 여기에는 도시 이름과 그날의 최고 및 최저 기온, 비 올 확률이 포함됩니다.

fun main() {
    println("City: Ankara")
    println("Low temperature: 27, High temperature: 31")
    println("Chance of rain: 82%")
    println()

    println("City: Tokyo")
    println("Low temperature: 32, High temperature: 36")
    println("Chance of rain: 10%")
    println()

    println("City: Cape Town")
    println("Low temperature: 59, High temperature: 64")
    println("Chance of rain: 2%")
    println()

    println("City: Guatemala City")
    println("Low temperature: 50, High temperature: 55")
    println("Chance of rain: 7%")
    println()
}

각 도시의 날씨를 출력하는 코드에는 유사점이 많습니다. 예를 들어 "City:""Low temperature:"와 같이 여러 번 반복되는 구문이 있습니다. 유사한 코드가 반복되면 프로그램에 오류가 발생할 수 있습니다. 도시 중 하나의 경우 오타가 있거나 날씨 세부정보 중 하나를 빠뜨릴 수 있습니다.

  1. main() 함수의 반복을 줄이기 위해 한 도시의 날씨 세부정보를 출력하는 함수를 만들고 남은 도시에도 동일한 작업을 적용할 수 있나요?
  2. 각 도시에 관해 만든 함수를 호출하고 적절한 날씨 세부정보를 인수로 전달하도록 main() 함수를 업데이트할 수 있나요?

12. 솔루션 코드

이 솔루션에서는 println() 함수를 사용하여 각 줄에 메시지를 출력합니다.

fun main() {
    println("Use the val keyword when the value doesn't change.")
    println("Use the var keyword when the value can change.")
    println("When you define a function, you define the parameters that can be passed to it.")
    println("When you call a function, you pass arguments for the parameters.")
}

컴파일 오류 수정

코드에는 두 가지 컴파일 오류가 있습니다.

  1. 문자열은 작은따옴표가 아닌 큰따옴표로 끝나야 합니다.
  2. 함수 인수는 중괄호가 아닌 괄호로 끝나야 합니다.
fun main() {
    println("New chat message from a friend")
}

문자열 템플릿

컴파일 오류는 읽기 전용 변수인 discountPercentageoffer에 새 값을 할당한 결과입니다. 이는 허용되지 않는 할당입니다.

fun main() {
    val discountPercentage = 20
    val item = "Google Chromecast"
    val offer = "Sale  - Up to $discountPercentage% discount off $item! Hurry Up!"

    println(offer)
}

대안으로 var 키워드를 사용하여 discountPercentage 정수와 offer 문자열을 선언할 수 있습니다. 그러나 이 값은 프로그램 컨텍스트에서 변경할 수 없으므로 val 키워드를 그대로 사용해도 됩니다.

문자열 연결

1단계

프로그램은 다음과 같이 출력됩니다.

The total party size is: 2030

까다로운 문제였습니다. + 연산자가 String 값에 사용되면 연결된 문자열이 생성됩니다. 정수는 큰따옴표로 묶여 정수가 아닌 문자열로 간주되므로 2030이 출력됩니다.

2단계

numberOfAdultsnumberOfKids 변수 주위의 큰따옴표를 삭제하여 Int 변수로 변환할 수 있습니다.

fun main() {
    val numberOfAdults = 20
    val numberOfKids = 30
    val total = numberOfAdults + numberOfKids
    println("The total party size is: $total")
}

Kotlin 컴파일러는 할당된 값에 기반하여 변수 유형을 추론할 수 있습니다. 이 경우 컴파일러는 numberOfAdultsnumberOfKids 변수가 Int 유형이라고 추론합니다.

메시지 서식

프로그램은 다음과 같이 출력됩니다.

Congratulations for your bonus! You will receive a total of 5000 + 1000 (additional bonus).

"$baseSalary + $bonusAmount"는 템플릿 표현식 문법을 사용합니다. 템플릿 표현식에서는 코드가 먼저 평가된 후 결과가 문자열에 연결됩니다.

이 문제에서 $baseSalary 변수는 5000 값으로 평가되고 $bonusAmount 변수는 1000 값으로 평가됩니다. 그러면 결과가 연결되어 "5000 + 1000"이 생성되고 result 변수에 할당됩니다.

기본적인 수학 연산 구현

1단계

val 키워드를 사용하여 변경할 수 없는 변수 result를 정의한 다음 더하기 작업의 결과를 할당합니다.

fun main() {
    val firstNumber = 10
    val secondNumber = 5

    val result = firstNumber + secondNumber
    println("$firstNumber + $secondNumber = $result")
}

2단계

  1. firstNumber 매개변수와 secondNumber 매개변수(둘 다 Int 유형)를 허용하고 Int 값을 반환하는 add() 함수를 만듭니다.
  2. add() 함수 본문 내에 더하기 연산 코드를 입력하고 return 키워드를 사용하여 연산 결과를 반환합니다.
fun add(firstNumber: Int, secondNumber: Int): Int {
    return firstNumber + secondNumber
}

3단계

  1. firstNumber 매개변수와 secondNumber 매개변수(둘 다 Int 유형)를 받고 Int 값을 반환하는 subtract() 함수를 정의합니다.
  2. subtract() 함수 본문 내에 빼기 연산 코드를 입력하고 return 키워드를 사용하여 연산 결과를 반환합니다.
fun subtract(firstNumber: Int, secondNumber: Int): Int {
    return firstNumber - secondNumber
}
  1. subtract() 함수를 사용하도록 main() 함수를 수정합니다. 솔루션 예시는 다음과 같습니다.
fun main() {
    val firstNumber = 10
    val secondNumber = 5
    val thirdNumber = 8

    val result = add(firstNumber, secondNumber)
    val anotherResult = subtract(firstNumber, thirdNumber)

    println("$firstNumber + $secondNumber = $result")
    println("$firstNumber - $thirdNumber = $anotherResult")
}

fun add(firstNumber: Int, secondNumber: Int): Int {
    return firstNumber + secondNumber
}

fun subtract(firstNumber: Int, secondNumber: Int): Int {
    return firstNumber - secondNumber
}

기본 매개변수

1단계

  1. operatingSystem 매개변수와 emailId 매개변수(둘 다 String 유형)를 허용하고 String 값을 반환하는 displayAlertMessage() 함수를 만듭니다.
  2. 함수 본문에서 템플릿 표현식을 사용하여 메시지를 업데이트하고 반환합니다.
fun displayAlertMessage(operatingSystem: String, emailId: String): String {
    return "There is a new sign-in request on $operatingSystem for your Google Account $emailId."
}

2단계

  • operatingSystem 매개변수에 "Unknown OS" 값을 할당합니다.
fun displayAlertMessage(
    operatingSystem: String = "Unknown OS",
    emailId: String
): String {
    return "There is a new sign-in request on $operatingSystem for your Google Account $emailId."
}

만보계

함수 이름과 변수 이름은 카멜 표기법을 따라야 합니다.

이름에 여러 단어가 포함되면 첫 번째 단어의 첫 글자는 소문자로 쓰고 다음 단어의 첫 글자는 대문자로 쓰며 단어 사이의 공백은 삭제합니다.

다음과 같은 함수 이름을 예로 들 수 있습니다.

  • calculateTip
  • displayMessage
  • takePhoto

다음과 같은 변수 이름을 예로 들 수 있습니다.

  • numberOfEmails
  • cityName
  • bookPublicationDate

이름에 관한 자세한 내용은 이름 지정 규칙을 참고하세요.

Kotlin 키워드는 함수 이름으로 사용하지 마세요. 이러한 단어는 Kotlin 언어에서 이미 특정 의미가 할당되어 있습니다.

솔루션 코드는 다음 코드 스니펫과 같습니다.

fun main() {
    val steps = 4000
    val caloriesBurned = pedometerStepsToCalories(steps);
    println("Walking $steps steps burns $caloriesBurned calories")
}

fun pedometerStepsToCalories(numberOfSteps: Int): Double {
    val caloriesBurnedForEachStep = 0.04
    val totalCaloriesBurned = numberOfSteps * caloriesBurnedForEachStep
    return totalCaloriesBurned
}

두 숫자 비교

  • timeSpentToday 매개변수와 timeSpentYesterday 매개변수(둘 다 Int 유형)를 허용하고 Boolean 값을 반환하는 compareTime() 함수를 만듭니다.

이 솔루션은 > 비교 연산자를 사용합니다. 이 연산자는 Boolean 값으로 평가되므로 compareTime() 함수는 단순히 timeSpentToday > timeSpentYesterday의 결과를 반환합니다.

예를 들어 300 인수를 timeSpentToday 매개변수에 전달하고 250 인수를 timeSpentYesterday 매개변수에 전달하면 함수 본문은 300 > 250으로 평가되어 true 값을 반환합니다. 300이 250보다 크기 때문입니다.

fun main() {
    println("Have I spent more time using my phone today: ${compareTime(300, 250)}")
    println("Have I spent more time using my phone today: ${compareTime(300, 300)}")
    println("Have I spent more time using my phone today: ${compareTime(200, 220)}")
}

fun compareTime(timeSpentToday: Int, timeSpentYesterday: Int): Boolean {
    return timeSpentToday > timeSpentYesterday
}
Have I spent more time using my phone today: true
Have I spent more time using my phone today: false
Have I spent more time using my phone today: false

함수로 중복 코드 이동

  1. main() 함수 뒤에 앙카라의 날씨 세부정보를 출력하는 함수를 만듭니다.

함수 이름에는 printWeatherForCity() 또는 비슷한 이름을 사용하면 됩니다.

  1. main() 함수에서 함수를 호출합니다.

프로그램은 앙카라의 날씨 세부정보를 출력합니다.

fun main() {
    printWeatherForCity()
}

fun printWeatherForCity() {
    println("City: Ankara")
    println("Low temperature: 27, High temperature: 31")
    println("Chance of rain: 82%")
    println()
}

이제 다른 도시의 날씨 세부정보를 출력할 수 있도록 더 유연한 다른 함수를 만들 수 있습니다.

  1. println() 문의 앙카라 관련 부분을 변수로 바꿉니다.

변수 이름에 카멜 표기법을 사용하고 변수 앞에 $ 기호를 사용하여 변수 이름이 아닌 변수 값이 사용되도록 합니다. 다음은 이전 Codelab에서 알아본 문자열 템플릿입니다.

fun printWeatherForCity() {
    println("City: $cityName")
    println("Low temperature: $lowTemp, High temperature: $highTemp")
    println("Chance of rain: $chanceOfRain%")
    println()
}
  1. 함수가 호출될 때 이러한 변수가 함수에 전달되어야 하는 매개변수가 되도록 함수 정의를 변경하고 각 매개변수의 데이터 유형을 지정합니다.

cityName 매개변수는 String 유형이지만 lowTemp, highTemp, chanceOfRain 매개변수는 Int 유형입니다.

함수 정의에는 return 값이 필요하지 않습니다. 메시지가 결과에 출력되기 때문입니다.

fun printWeatherForCity(cityName: String, lowTemp: Int, highTemp: Int, chanceOfRain: Int) {
    println("City: $cityName")
    println("Low temperature: $lowTemp, High temperature: $highTemp")
    println("Chance of rain: $chanceOfRain%")
    println()
}
  1. printWeatherForCity() 함수를 호출하고 앙카라의 날씨 세부정보를 전달하도록 main() 함수를 업데이트합니다.

도시 이름은 "Ankara", 최저 기온은 27, 최고 기온은 31, 비 올 확률은 82입니다.

fun main() {
    printWeatherForCity("Ankara", 27, 31, 82)
}

fun printWeatherForCity(cityName: String, lowTemp: Int, highTemp: Int, chanceOfRain: Int) {
    println("City: $cityName")
    println("Low temperature: $lowTemp, High temperature: $highTemp")
    println("Chance of rain: $chanceOfRain%")
    println()
}
  1. 프로그램을 실행하여 출력에 앙카라의 날씨 세부정보가 표시되는지 확인합니다.
  2. 다른 도시의 날씨 세부정보로 printWeatherForCity() 함수를 호출합니다.
fun main() {
    printWeatherForCity("Ankara", 27, 31, 82)
    printWeatherForCity("Tokyo", 32, 36, 10)
    printWeatherForCity("Cape Town", 59, 64, 2)
    printWeatherForCity("Guatemala City", 50, 55, 7)
}

fun printWeatherForCity(cityName: String, lowTemp: Int, highTemp: Int, chanceOfRain: Int) {
    println("City: $cityName")
    println("Low temperature: $lowTemp, High temperature: $highTemp")
    println("Chance of rain: $chanceOfRain%")
    println()
}
  1. 프로그램을 실행합니다.

원본 프로그램과 동일한 결과가 출력되지만 코드가 이제 더 간결하고 불필요한 반복이 포함되어 있지 않습니다. 도시의 날씨 세부정보를 출력하는 모든 코드가 printWeatherForCity() 함수라는 한 위치에 집중됩니다. 날씨 세부정보가 표시되는 방식을 변경하려면 한 위치에서 변경하여 모든 도시에 적용할 수 있습니다.

13. 추가 연습

Kotlin 언어에 관해 더 연습하려면 JetBrains 아카데미에서 제공하는 Kotlin 기본사항 트랙을 확인하세요. 특정 주제로 이동하려면 지식 지도로 이동하여 트랙에서 다루는 주제 목록을 살펴보세요.