Android/Kotlin

# 코틀린 기초 실습 1주차

양심고백 2024. 3. 12. 20:36
반응형

## Collection과 Iteration을 활용하여 아래 문제를 해결하시오.

 

1. 루프(for)를 2번 사용하여 다음과 같이 구구단 출력하도록 프로그램 만들기.

2x2=4

2x3=6

…(중략)…

9x8=72

9x9=81

* Collection와 Iteration을 활용

* 단, 출력할 때 문자열 내에 ${ }를 사용하여 변수를 넣어서 사용할 것

fun main() {
    for (i in 2..9) {
        for (j in 1..9) {
            print("$i"+"x"+"$j=${i*j}")
            println("")
        }
        println("")
    }
}

 

 

2. 10명의 퀴즈 점수 15, 4, 8, 9, 13, 12, 10, 9, 11, 6 을 저장하고 있는 배열의 최소 점수와 평균 점 수를 출력하는 프로그램을 작성하시오.

* Collection와 Iteration을 활용

* 단, 최소 점수와 평균 점수를 계산하는 함수를 작성하여 사용할 것

fun main() {
    var sum = 0
    var min = 15
    val intArrays = arrayOf(15, 4, 8, 9, 13, 12, 10, 9, 11, 6)
    for (s in intArrays) {
        sum+=s
        if(min>s)
            min=s
    }
    println(min)
    print(sum/10)
}

 

 

3. 다음 코드가 오류 없이 실행되기 위해 밑줄 친 부분에 들어갈 코드를 작성해보시오. (단, println 으로 출력되는 결과는 모두 hello 1 이다.)

/* 문제 */
fun test(                      ) = "$name $num" 
fun main() { 
    println(test("hello")) 
    println(test("hello", 1)) 
    println(test(num = 1)) 
    println(test(name = "hello")) 
}

 

/* 정답 */
fun test(name: String = "hello", num : Int = 1) = "$name $num"
fun main() {
    println(test("hello"))
    println(test("hello", 1))
    println(test(num = 1))
    println(test(name = "hello"))
}

 

 

4. 다음 test() 함수의 리턴 값을 생각해보고 실행시켜서 확인해보자.

리턴 값 = 0

fun test() = try {
            "20t".toInt()
        } catch (e: NumberFormatException) {
            0
        }

fun main()
{
	print(test())
}

 

 

5. 다음 야구 경기 스코어를 각각 배열에 저장한 다음 스코어를 회수별로 출력하고, 점수의 합을 출력하는 프로그램을 작성하시오.

회       1 2 3 4 5 6 7 8 9

Korea 0 0 0 0 1 0 0 2 0

Japan 1 1 0 0 0 0 0 0 0

출력 예시)

* 단, 출력할 때에는 Collection의 forEach를 사용해볼 것, print와 println의 차이도 생각해 볼 것

fun main() {
val Korea = arrayOf(0, 0, 0, 0, 1, 0, 0, 2, 0)
val Japan = arrayOf(1, 1, 0, 0, 0, 0, 0, 0, 0)
var Koreasum=0
var Japansum=0
println("야구 스코어")
println("")
print("회\t")
for (i in 1..9) {
    print("$i ")
}
println("Run")

print("Korea\t")
Korea.forEach { i->
    print("${i}"+" ")
    Koreasum += i
}
println(Koreasum)

print("Japan\t")
Japan.forEach { i->
    print("${i}"+" ")
    Japansum += i
}
println(Japansum)
}

 

 

6. 리스트를 입력 받아 이진 탐색 기반으로 특정 숫자를 찾아 해당 위치를 리턴하는 함수 만들기.

/* 문제 */
fun find_number(a : Int, list : List<Int>) : Int { 
// 함수 정의 // 
} 
fun main() 
{ 
val a = listOf(1,2,3,4,5,6,7,8,9,10) 
println(find_number(2, a))   // 1 
println(find_number(9, a))   // 8 
println(find_number(5, a))   // 4 
}

 

/* 정답 */
fun find_number(a: Int, list: List<Int>): Int {
    //이렇게 indexOf 함수를 이용하면 편리하겠지만.. 이진탐색 쓰라네요;
    //return list.indexOf(a)
    
    var left = 0
    var right = list.size - 1
    
    while (left <= right) {
        val mid = left + (right - left) / 2
        
        when {
            list[mid] == a -> return mid
            list[mid] < a -> left = mid + 1
            else -> right = mid - 1
        }
    }
    
    return -1 // 숫자를 찾지 못한 경우
}

fun main() {
    val a = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    println(find_number(2, a)) // 1
    println(find_number(9, a)) // 8
    println(find_number(5, a)) // 4
}
반응형

'Android > Kotlin' 카테고리의 다른 글

# 코틀린OOP 실습 2주차  (0) 2024.03.19